说我有一段这样的代码:
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);
是否有任何优点或缺点,因为它们都返回相同的数字?
答案 0 :(得分:3)
正如其他人所提到的,在您的示例中,您可以互换使用let
和var
。区别在于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