当我使用最新 (1.0) 版本的咖啡脚本时,一个简单的 javascript 输出如下所示(默认情况下):
(function() {
var a;
a = 1;
}).call(this);
.call(this)做什么以及添加它的原因是什么?
当我使用最新 (1.0) 版本的咖啡脚本时,一个简单的 javascript 输出如下所示(默认情况下):
(function() {
var a;
a = 1;
}).call(this);
.call(this)做什么以及添加它的原因是什么?
这是一种确保编译后的 CoffeeScript 有自己的变量名范围的方法。这在效率和简单性方面有好处(您知道生成的 JavaScript 不会踩到其他代码使用的变量)。您可以使用CoffeeScript 编译器的--bare
(或) 选项禁用它。-b
的原因call(this)
只是为了确保 CoffeeScript 与this
放置它的范围相同,因为函数通常不会this
从周围的上下文中继承它们的对象。
它正在创建一个函数,然后使用父函数/对象范围调用自身。
.call 和 .apply 是调用函数的不同方法。您基本上创建了一个函数,除了在自己的范围内设置 a=1 之外什么都不做。
在 javascript 中,您需要意识到每个函数都是一个对象,并且this
是指当前对象/函数。使用函数内部的.call(this)
覆盖this
并将其替换为调用上下文中的覆盖。