var 声明的变量在window上
用let或者const去声明变量,这个变量不会被放到window上
array.forEach(function(currentValue, index, arr), thisValue)
用let或者const去声明变量,这个变量不会被放到window上
array.forEach(function(currentValue, index, arr), thisValue)
如果浏览器对let已经支持了,其实绝大部分情况下var都可以被替换成let,以后尽量用let,不要用var
let s1 = 1;
var w1 = 1;
console.log(window.s1);//undefined
console.log(window.w1);//1
var arr = [];
for(var i=0;i<3;i++){
arr.push(function(){
console.log(i);
});
}
arr.forEach(function(val,i){
val();// 3 3 3
});
//
var arr=[];
for(let i=0;i<3;i++){
arr.push(function(){
console.log(i);
});
}
arr.forEach(function(fn,index){
console.log("m"+index);
fn();//0,1,2
});
错误举例
function f1(x){
let x;//Uncaught SyntaxError: Identifier 'x' has already been declared
}
//变量不能和形参同名
function f2(x){
{
let x;
console.log(x);//undefined
}
}
//变量未定义
function f3(){
let tmp;
let tmp;//Uncaught SyntaxError: Identifier 'tmp' has already been declared
}
//同一作用域,变量不能同名