博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
「译」JavaScript 的怪癖 2:两个「空值」:undefined 和 null
阅读量:6274 次
发布时间:2019-06-22

本文共 1082 字,大约阅读时间需要 3 分钟。

原文:

译文:

译者:


此文是  系列的第二篇。 感谢  对本文的翻译。

以下是正文:

对于“空值”或“空引用”,大多数编程语言只有一个值。比如,在 Java 中用的是 null。 但是在 Javascript 中却有两个特殊的值:undefined 和 null。 他们基本上是相同,但用法上却略有些不同。 在这个  的最后,我会解释一下在 ECMAScript 6 中的一些变化。

undefined 是被语言本身所分配的。 如果一个变量还没有被初始化,那么它的值就是 undefined:

> var foo;> fooundefined

同理,当缺失参数时 JavaScript 会分配一个 undefined

> function id(x) { return x }> id()undefined

null 是被开发者用来明确指出某个值是缺失的, 例如,对于 :

> console.log(JSON.stringify({ first: 'Jane' }, null, 4)){    "first": "Jane"}

校检:一个变量是否有值?

如果你想知道变量 v 是否有值,正常情况下,你需要同时检验 undefined 与 null。 幸运的是两个值都是 。 因此,只用一个判断,就可以同时检验这两项是否为真:

if (v) {    // v 有值} else {    // v 没有值}

在本  的第 5 部分——关于函数参数的处理——你将会看到更多的上面校检例子。 有一点要注意的是:这个检查也会把 false,-0+0NaN 与 '' 当成“空值”。 如果这不是你想要的,那么就不能使用上面的校检方法了。

你有两个选择。

有些人提倡使用不等于(!=)来校检 v 既不是 undefined 或 null:

if (v != null) {    // v 有值} else {    // v 没有值}

不过,这要求你要明白 != 认为 null 只等于它自己或是 undefined。 我喜欢用更有可读性的 !==:

if (v !== undefined && v !== null) {    // v 有值} else {    // v 没有值}

,所有在这个章节中提到的这三个校检基本是相同的。 所以,最后用哪个取决于你的需求还有你的品味。 一些压缩工具甚至用!= 重写了最后一条校检。

转载于:https://www.cnblogs.com/lanzhi/archive/2013/04/18/6468117.html

你可能感兴趣的文章
苏宁11.11:如何基于异步化打造会员任务平台?
查看>>
滴滴开源支撑业务代码重构工具Rdebug
查看>>
Table Editor 使用方法
查看>>
支持多种小程序!阿里云ARMS推出小程序监控
查看>>
《The Age of Surge》作者访谈
查看>>
《A Seat at the Table》作者访谈录
查看>>
F# 4.5提供Spans、Match!等特性
查看>>
微信小程序模块化开发实践
查看>>
Jenkins将致力于提升稳定性、易用性和云原生兼容性
查看>>
Facebook开源工具包LASER,支持93种语言
查看>>
禁止eclipse校验JavaScript
查看>>
从微服务迁移到工作流的经验之谈
查看>>
Oracle再发力,区块链平台多项更新
查看>>
微软发布用于Serverless架构的Azure API Management
查看>>
MongoDB Mobile Sync for iOS推出Beta版本
查看>>
Visual Studio 2015价格大幅下调
查看>>
QCon演讲速递:异步处理在分布式系统中的优化作用
查看>>
Java 20年:转角遇到Go
查看>>
软件测试自动化的最新趋势
查看>>
SpringOne大会上发布了一个实验性的反应式关系型数据库连接驱动R2DBC
查看>>