请你解释为什么我的代码似乎与var一起使用但不允许,片段在下面?
使用var的片段
function revarr(arr) {
for (var i = 0; i < arr.length / 2; i++) {
[arr[i], arr[arr.length - 1 - i]] = [arr[arr.length - 1 - i], arr[i]];
}
return arr;
}
console.log(revarr([1, 2, 3]))
&#13;
使用let:的代码段
function revarr(arr) {
for (let i = 0; i < arr.length / 2; i++) {
[arr[i], arr[arr.length - 1 - i]] = [arr[arr.length - 1 - i], arr[i]];
}
return arr;
}
console.log(revarr([1, 2, 3]))
&#13;
感谢您的帮助。
答案 0 :(得分:1)
基本上<a:LongitudinalTracker z:Id="i58">
<Name xmlns="http://schemas.datacontract.org/2004/07/HmsSim.EntityModule.BaseTypes" i:nil="true"/>
<a:FMax xmlns:b="http://www.w3.org/2001/XMLSchema" i:type="b:string"/>
<a:K>2</a:K>
<a:KVy xmlns:b="http://www.w3.org/2001/XMLSchema" i:type="b:string"/>
<a:Td xmlns:b="http://www.w3.org/2001/XMLSchema" i:type="b:string"/>
<a:VyLim xmlns:b="http://www.w3.org/2001/XMLSchema" i:type="b:string"/>
</a:LongitudinalTracker>
关键字声明变量,这些变量对使用它的语句,块或表达式的范围有限。 let
关键字定义变量全局或局部范围。
如果我们尝试var
,在第一个函数中循环console.log(i)
后,值将显示在控制台中。但是,如果我们在第二个函数中for
循环后尝试console.log(i)
,那么我们将得到&#34; for
&#34;控制台出错。
<强>原因:强>
由于ReferenceError: i is not defined
关键字,第一个函数变量范围是本地的,因此您可以在var
循环后访问变量i
。
由于for
关键字,第二个函数变量范围受限,因此您只能访问let
循环内的变量i
。
示例:强>
for