我刚刚购买了最新版本的“JavaScript:权威指南”,并且已经有了一个问题。 :d定义函数的JavaScript差异
是以下行语义上是相同的:
var square = function(n){
return n * n;
};
和
function square(n){
return n * n;
}
如果是的话,使用的是他们的优势/劣势?
感谢您的帮助!
我刚刚购买了最新版本的“JavaScript:权威指南”,并且已经有了一个问题。 :d定义函数的JavaScript差异
是以下行语义上是相同的:
var square = function(n){
return n * n;
};
和
function square(n){
return n * n;
}
如果是的话,使用的是他们的优势/劣势?
感谢您的帮助!
检查了这一点:
a(); // prints 'A'
function a(){
console.log('A');
};
这:
b(); // throws error. b is not a function
var b = function() {
console.log('B');
};
你有没有注意到有什么区别?
感谢您的简单解释! – aydio 2011-05-27 11:45:55
的确很好的例子! – 2011-05-27 13:40:19
是的,他们完全一样。
第一种方法的主要优点是,它为您提供了该函数的引用,这样,你可以把它传递给另一个函数或附加到一个对象,如果你需要。
我同意第一句话,但是如果他们都做完全相同的事情,又怎么能与另一个不同? – 2011-05-26 14:04:10
您可以对函数声明(传递和分配)执行相同的操作。 – 2011-05-26 14:06:36
不同的是,在第一个解决方案,你可以这样做:
var square = function(n){
return n * n;
};
// some code
square = function(n) { return n*n*n; }
你有参考的功能。在另一个解决方案中,该函数是静态声明的。
免责声明:JS需要大师来告诉我,如果我错了=)。
嗨克莱门特,说实话,我不明白最后一行是什么。你能否向我解释** return n * n * n; **当我想计算平方的目的? – aydio 2011-05-27 12:04:53
你的例子是一个函数,它返回一个数字的平方值,但它可能是任何其他函数,确实很复杂,或者真的是上下文相关的工作。为方形方法返回'n * n * n'是愚蠢的,但仅仅是为了举例。 – 2011-05-27 13:39:41
的可能重复的[是什么函数表达式VS声明在Javascript之间的差异?](http://stackoverflow.com/questions/1013385/what-is-the-difference-between-a-function-expression- vs-declaration-in-javascript) – 2011-05-26 14:13:57
谢谢指出,费利克斯。这两种方法之间的差异现在已经很清楚了。 – aydio 2011-05-27 11:39:44