javascript - 为什么使用 .call(this) 而不是括号

标签 javascript

<分区>

有没有什么特别的原因让我经常遇到:

(function() {
  console.log("Hello");
}).call(this);

代替:

(function() {
  console.log("Hello");
})();

传不传this调用应该是一样的效果吧?

似乎有一些性能差异:http://jsperf.com/call-vs-parenthesis .

最佳答案

大概该函数中的代码使用了 this(您只有 console.log)。在带有callthis 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:调用两次的onload函数

javascript - 我如何通过一个命令让 grunt 观看和 livereload - Gruntjs

javascript - 如何对数组中的每个第二个数字求和?

javascript - base64二进制解码32位数组