function getItemKey (item, key) {
if (!item || !key) return void 666
return typeof key === 'string'
? item[key]
: key(item)
}
看到一段源代码,这里为什么要写void 666?
function getItemKey (item, key) {
if (!item || !key) return void 666
return typeof key === 'string'
? item[key]
: key(item)
}
看到一段源代码,这里为什么要写void 666?
相当于return undefined;
,不写666也行,其实你写啥都无所谓,譬如:return void 'fucking'
感受一下文档的画风:
文档地址:void
严格来说,这种方式还是和直接返回
undefined
略有区别的,好歹她会先把void
后面的表达式执行了,再返回undefined
void 0 其实就是undefined,不过void 0还有一个用处.
可以有效减少js文本字符串的数量:
"undefined".length == 9
"void 0".length == 6
可以节省3个字符来表达undefined,同时也节省了http流量.
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
return 666
的结果是undefined
,目的就是为了返回undefined
。不过一般都是
void 0
,用666纯属开玩笑,我还见过void 23333
呢。至于为什么不直接用
undefined
,是因为undefined
是个标识符,在某些环境下可能被重新赋值。所以用void更保险。参考:
我专栏的第一篇文章
规范:11.4.2 The void Operator