<分区>
有没有什么特别的原因让我经常遇到:
(function() {
console.log("Hello");
}).call(this);
代替:
(function() {
console.log("Hello");
})();
传不传this
调用应该是一样的效果吧?
似乎有一些性能差异:http://jsperf.com/call-vs-parenthesis .
标签 javascript
<分区>
有没有什么特别的原因让我经常遇到:
(function() {
console.log("Hello");
}).call(this);
代替:
(function() {
console.log("Hello");
})();
传不传this
调用应该是一样的效果吧?
似乎有一些性能差异:http://jsperf.com/call-vs-parenthesis .
最佳答案
大概该函数中的代码使用了 this
(您只有 console.log
)。在带有call
、this
within 的版本中,函数与this
outside 相同。如果没有 call
,函数内部的 this
要么是全局对象(松散模式),要么是 undefined
(严格模式)。
如果您没有在函数中使用 this
,则没有理由执行 call
版本,我倾向于不这样做,因为它是额外不必要的复杂性(显然非常非常小的性能成本)。
关于javascript - 为什么使用 .call(this) 而不是括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502732/
相关文章:
javascript - 如果该字符与第一个输出的字符相同,如何防止显示第二个按键的输出?
javascript - 在事件上定位 d3.js 上的其他元素
javascript - 使用 Angularjs $state.go 进行导航
javascript - jqGrid;以 json 格式获取的日期未显示在表中。也无法格式化日期
图像 src 属性中的 JavaScript "<SCRIPT>"
javascript - 使用ajax检索json数据的所有 'data'属性
javascript - 我如何通过一个命令让 grunt 观看和 livereload - Gruntjs