gpt4 book ai didi

javascript - coffeescript定义函数(或方法)时,用 ":"和 "="分隔函数名和参数列表有什么区别?

转载 作者:行者123 更新时间:2023-11-30 17:21:51 25 4
gpt4 key购买 nike

我在文档中找不到任何引用。以下是一些示例。

func1 = (a, b = 4) -> b^a

func2: (a, b = 4) -> b^a

class ClassA
constructor: (@a, @b = 4) ->

class ClassB
constructor= (@a, @b = 4) ->

根据我的经验,我总是使用 =,但是我发现 : 已在某些博客文章的多个示例中使用。希望有人能帮忙澄清一下。

最佳答案

它们完全不同,正如检查代码所显示的那样。对于前两个函数:

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;

})();

关于javascript - coffeescript定义函数(或方法)时,用 ":"和 "="分隔函数名和参数列表有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25020011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com