void 0和undefined的区别

水墨寒 2014年12月02日提问
0

value === undefined
value === void 0

zepto源码中把 undefined 换成了 void 0
除了早期的浏览器中undefined 可以被替换 还有别的什么用意这里应该不是防止被替换,给的说法是更快。

查看全部 2 个回答

2

已采纳

void 会执行后面的表达式并返回 undefined,可以用于执行一些只需要 side effect 而不需要返回值的表达式。
void 0 === undefined,但是我觉得 undefined 更清晰,而且可以采用各种手段防止 undefined 被重定义。整个 zepto 里只有这一个文件 里用到了 void 0,看来也并不是提倡使用 void 0.
另外 void 0 的确比 undefined 快一点,可能是 iOS 3 上差距比较大吧(仅猜测,欢迎有条件的同学测试下)

2

zepto 我是从第一次提交,然后看每次提交那么看的,应该是后面会被改掉。谢谢你的回答。

水墨寒 · 2014年12月02日

展开评论