神了个奇了,函数还可以这样写

97 阅读1分钟

经过

事情是这样的。今天在改以前代码的时候,准备在某函数中添加一个语句,此函数如下:

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。

结语

目前没发现这样做的实际意义,纯意外手滑写出。做了记录。