【问题标题】:JavaScript differences defining a function定义函数的 JavaScript 差异
【发布时间】:2011-05-26 13:58:11
【问题描述】:

我刚刚购买了最新版本的“JavaScript:权威指南”,并且已经有一个问题。 :D

以下几行在语义上是否相同:

var square = function(n){
                 return n * n;
             };

function square(n){
    return n * n;
}

如果是,使用其中任何一个的优点/缺点是什么?

感谢您的帮助!

【问题讨论】:

标签: javascript function


【解决方案1】:

看看这个:

a(); // prints 'A'

function a(){

    console.log('A');

};

还有这个:

b(); // throws error. b is not a function

var b = function() {

    console.log('B');

};

你注意到区别了吗?

【讨论】:

  • 感谢您的简单解释!
【解决方案2】:

是的,他们做同样的事情。

第一种方法的主要优点是它为您提供了对该函数的引用,以便您可以将其传递给另一个函数或在需要时将其附加到对象。

【讨论】:

  • 我同意第一句话,但如果他们都做完全相同的事情,那么一个与另一个有何不同?
  • 你可以对函数声明做同样的事情(传递和赋值)。
【解决方案3】:

不同的是,在第一个解决方案中,您可以这样做:

var square = function(n){
                 return n * n;
             };

// some code

square = function(n) { return n*n*n; }

你有一个函数的reference。在另一种解决方案中,函数是静态声明的。

免责声明:如果我错了,需要 JS 大师告诉我 =)。

【讨论】:

  • 嗨克莱门特,说实话,我不明白最后一行是做什么的。当我想计算平方时,您能否解释一下 return nnn; 的目的?
  • 您的示例是一个返回数字平方值的函数,但它可以是任何其他函数,它执行复杂的或真正依赖于上下文的工作。为 square 方法返回 n*n*n 是愚蠢的,但这只是为了示例。
猜你喜欢
  • 2015-08-18
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多