在函数中使用let over var的优点

时间:2016-05-20 17:42:14

标签: javascript function ecmascript-6 encapsulation var

说我有一段这样的代码:

const number = 3;

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

finalAnswer = fooFunction();

console.log(finalAnswer);

假设与ES2015兼容的浏览器,使用上述代码的优点/缺点是:

const number = 3;

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

finalAnswer = fooFunction();

console.log(finalAnswer);

是否有任何优点或缺点,因为它们都返回相同的数字?

2 个答案:

答案 0 :(得分:3)

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

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

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

  console.log(x);
}

printFoo("hello");

您无法使用let执行此操作,因为let x的范围限定为if块,因此未定义。

答案 1 :(得分:0)

在您提供的代码示例中,这两个代码可以互换。 let派上用场的方法是将范围限制为块级而不是功能级。例如,在let循环内使用for

值得注意的是,使用var关键字创建的变量是悬挂的,而使用let关键字创建的变量则不是。

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