经过
事情是这样的。今天在改以前代码的时候,准备在某函数中添加一个语句,此函数如下:
const btnClik=()=>[console.log(111)];
我添加语句后
const btnClik=()=>[
console.log(111);
console.log(222);//add
];
此时毫无疑问就报错了。我才反应过来函数“作用域”竟然是一个中括号("[]}")!我此时一时有点震惊,以前的业务竟然正常。
但我冷静下来后,我发现不是我意识中的函数作用域可以用中括号("[]}")表达。我意识中是以为发生了以下这个情况
function test()[]
毫无疑问是我被箭头函数稍微懵了一下
实际这个场景其实是这样
const a=[console.log(111)]
定义一个数组,数组每一项是可执行语句,此时会发生什么?经过试验。语句会被执行,并且返回一个每一项为undefined的数组。
const a=[console.log(111)]
//结果 [undefined]
我找了很多资料,看了js相关书籍,都没有提起这个知识点。但是凭着日常的代码思维,这个仿佛也能说的过去:
即定义数组项为可执行语句时,就执行,并返回undefined。
结语
目前没发现这样做的实际意义,纯意外手滑写出。做了记录。