[译] 怎样判断一个变量是否为undefined

原文 http://www.quora.com/JavaScript/What-is-the-best-way-to-check-if-a-property-or-variable-is-undefined


1.  Javascript根据值决定变量类型。值可以是undefined。但变量只能有两种情况:声明或没声明。

2.  变量一旦声明即都被初始化为undefined值,直到变量被赋予了其他值。

3.  没有被声明的变量不具备undefined值,它们压根就不存在。引用一个不存在的变量将抛出ReferenceError异常,除非你使用的是typeof操作符。

4.  typeof操作符将对下列两种变量返回undefined: 没被声明的变量,和声明了但还未赋值的变量。

5.  null == undefined,但是 null !== undefined。双等号会隐式地调用类型转换。

6.  不要试图用将变量与undefined比较。undefined并不是Javascript关键字。所以如果有人重定义了undefined,你期望的比较就失效了。(当然,你可以在本地作用域上声明一个名字为"undefined"的变量,这样"undefined"就是undefined了)

7.  对于object类型变量,访问其没有声明的属性将返回undefined。如果调用(calling)其没有声明的子方法,将会抛出异常;但如果仅仅是访问(accessing),则不会抛异常(只要这个object存在)。

8.  因为第(4)点的关系,仅使用typeof操作符并不足以区分(a)没被声明的变量和(b)声明但尚未赋值的变量。我们可以使用in操作符,或者使用Object.hasOwnProperty()方法,后者将过滤掉继承自原型链上的父节点的属性。

总结来说,最简单的检查undefined的方法就是使用typeof操作符。

 

posted @   爷爷泡的茶  阅读(1045)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示