我在文件中找不到任何参考资料。以下是一些例子。
func1 = (a, b = 4) -> b^a
func2: (a, b = 4) -> b^a
class ClassA
constructor: (@a, @b = 4) ->
class ClassB
constructor= (@a, @b = 4) ->
根据我的经验,我总是使用=
,但我发现:
已在一些博文中的几个示例中使用过。希望有人可以帮忙澄清。
答案 0 :(得分:2)
他们完全不同,因为检查代码会显示出来。对于前两个功能:
func1 = function(a, b) {
if (b == null) {
b = 4;
}
return b ^ a;
};
({
func2: function(a, b) {
if (b == null) {
b = 4;
}
return b ^ a;
}
});
第一个定义一个函数。第二个定义了一个具有函数作为成员值的对象。
第二种方法并非特别有用(除非在函数声明中存在病态副作用),因为它创建的对象只会在之后立即丢弃它。
类示例略有不同,因为第一个将创建一个实际的构造函数,因为That's How CoffeeScript Does It。第二个创建一个名为的变量构造函数,这是一个非常不同的东西。
var ClassA, ClassB;
ClassA = (function() {
function ClassA(a, b) {
this.a = a;
this.b = b != null ? b : 4;
}
return ClassA;
})();
ClassB = (function() {
var constructor;
function ClassB() {}
constructor = function(a, b) {
this.a = a;
this.b = b != null ? b : 4;
};
return ClassB;
})();