在函数中使用 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
正如其他人所提到的,在您的示例中,您可以互换使用 let
和 var
。区别在于 let
是块作用域而 var
不是。
例如使用 var
你可以这样做(打印 'foo'):
function printFoo(param) {
if (param) {
var x = "foo";
}
console.log(x);
}
printFoo("hello");
您不能使用 let
执行此操作,因为 let x
的范围是 if
块,因此未定义。
假设我有这样一段代码:
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
正如其他人所提到的,在您的示例中,您可以互换使用 let
和 var
。区别在于 let
是块作用域而 var
不是。
例如使用 var
你可以这样做(打印 'foo'):
function printFoo(param) {
if (param) {
var x = "foo";
}
console.log(x);
}
printFoo("hello");
您不能使用 let
执行此操作,因为 let x
的范围是 if
块,因此未定义。