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
return 666
的结果是undefined
,目的就是为了返回undefined
。
不过一般都是void 0
,用666纯属开玩笑,我还见过void 23333
呢。
至于为什么不直接用undefined
,是因为undefined
是个标识符,在某些环境下可能被重新赋值。所以用void更保险。
参考:
我专栏的第一篇文章
规范:11.4.2 The void Operator
void是javascript中定义的一个操作符
void后面跟一个表达式,void操作符会立即执行后面的表达式,并且统一返回undefined