isUndefined
Every person is a new door to a different world.
— Six Degrees of Separation
本文为 《lodash 源码阅读》 系列文章,后续内容会在 github 中发布,欢迎 star,gitbook 同步更新。
源码
原理
这个函数很简单,只有一个判断条件为 value === undefined
,但这里没有使用 value === void 0
是为什么呢?难道 lodash 作者不担心 undefined
变量被全局修改吗?查阅资料后发现,issue 中也曾有人提出这样的疑惑,官方回应是:
In ES5 browsers it's not a concern.
支持 ES5
的浏览器,将不再需要考虑这个问题。查阅 MDN 了解到:
在现代浏览器(JavaScript 1.8.5/Firefox 4+),自 ECMAscript5 标准以来 undefined 是一个不能被配置(non-configurable),不能被重写(non-writable)的属性。即便事实并非如此,也要避免去重写它。
现今的浏览器大部分均已实现 ES5
标准,所以这个顾虑也不再考虑范围了。但是大家在局部作用域时,还是需要考虑 undefined
被重写的风险:
但是它有可能在非全局作用域中被当作标识符(变量名)来使用(因为 undefined 不是一个保留字)),这样做是一个非常坏的主意,因为这样会使你的代码难以去维护和排错。
参考
Last updated
Was this helpful?