javascript - 函数声明与函数表达式导致不同的结果

标签 javascript

在此代码片段中,trueFactorial(5) 返回 120:

function factorial(num) {
  if (num <= 1) {
    return 1;
  } else {
    return num * arguments.callee(num - 1);
  }
}

var trueFactorial = factorial;

var factorial = function(num) {
  return 0;
}

console.log(trueFactorial(5));

但在此代码片段中,trueFactorial(5) 返回 0

function factorial(num) {
  if (num <= 1) {
    return 1;
  } else {
    return num * arguments.callee(num - 1);
  }
}

var trueFactorial = factorial;

function factorial(num) {
  return 0;
}

console.log(trueFactorial(5));

唯一的区别是我们在第一个代码段中通过变量赋值声明了factorial。造成这种差异的原因是什么?

最佳答案

函数声明被提升。变量赋值则不然。

在示例一中,您将第一个函数分配给 trueFactorial

在示例二中,第二个函数被提升,因此它被分配给 trueFactorial

关于javascript - 函数声明与函数表达式导致不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46343676/

相关文章:

Javascript 对象括号表示法和 requirejs

javascript - 在 javascript 中定义类的最佳方法是什么

javascript - 使用 Webcrypto 使用 RSA 加密到多个公钥

javascript - 将带/不带分隔符的输入数字转换为整数

javascript - 如何通过单击 div 中包含的 anchor 标记来获取跨度数据?

javascript - 使用 forEach 方法更改项目的属性 (javascript)

javascript - jquery 按输入名称查找在 Firefox 中不起作用

javascript - Ajax - 为什么在 $.post() 中使用 JSON.parse(data) 和 dataType

javascript - 拼图游戏 - 将拼图 block 放入旋转木马 slider 中?

javascript - 使用 onchange 重定向到另一个 Controller