在函数中使用 let 而不是 var 的优点

Advantages of using let over var within a function

假设我有这样一段代码:

const number = 3;

function fooFunction() {
  let numberTwo = 5;
  var answer = number + numberTwo;
  return answer;
}

finalAnswer = fooFunction();

console.log(finalAnswer);

假设一个兼容 ES2015 的浏览器,使用上面的代码会是什么advantages/disadvantages,超过:

const number = 3;

function fooFunction() {
  var numberTwo = 5;
  var answer = number + numberTwo;
  return answer;
}

finalAnswer = fooFunction();

console.log(finalAnswer);

考虑到它们 return 相同的数字,有什么优点或缺点吗?

在您提供的代码示例中,两者可以互换。 let 派上用场的地方是将范围限制在块级而不是函数级。例如,在 for 循环中使用 let

值得注意的是,使用 var 关键字创建的变量会被提升,而使用 let 关键字创建的变量则不会。

Kyle Simpson 在 David Walsh 的博客上对此主题进行了精彩的细分:https://davidwalsh.name/for-and-against-let#implicit-hazards

正如其他人所提到的,在您的示例中,您可以互换使用 letvar。区别在于 let 是块作用域而 var 不是。

例如使用 var 你可以这样做(打印 'foo'):

function printFoo(param) {
  if (param) {
    var x = "foo";
  }

  console.log(x);
}

printFoo("hello");

您不能使用 let 执行此操作,因为 let x 的范围是 if 块,因此未定义。