我知道圆括号() 在JS中作用有很多种, 但是当前只讨论以下给出的例子
10.toString() // Invalid or unexpected token
(10).toString() // "10"
{}+'' // 0
({})+'' // "[object Object]"
10.toString() // Invalid or unexpected token
(10).toString() // "10"
{}+'' // 0
({})+'' // "[object Object]"
10.toString() // 语法错误
(10).toString() // 5解析为字面量 toString解析为属性
{}+'' // {}为代码块 执行+''
({})+'' // {}为对象 执行对象+''
在你的例子中,简单的说,直接用()
,就相当于定义了一个立即执行函数,回调对象是()
包裹着的内容
(10) //立即执行,返回10
({}) //立即执行,返回{}
通过这个特性,你也可以给这个函数加参数
(v => v + 10)(10); //返回20
我们也经常利用这个特性简化我们的代码
[1, 2, 3].map(v => {
return {value: v};
});
可以简化为下面这样
[1, 2, 3].map(v => ({value: v}))
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
.
:是小数点
,也是属性访问符
。{}
:是代码块
,也是对象
。圆括号就和数学运算里的圆括号一样,乖乖地定义了运算符的优先级(最高级)。避免像上面那样的歧义发生。