网站开发职业分析,做图网站地图,便利的聊城网站建设,杭州百度快照优化排名let 命令 es6新增了let命令#xff0c;用于声明变量#xff0c;与var用法类似#xff0c;但是使用let声明变量只在它所在的块内有效#xff0c;而var则是定义的全局变量 {let a10;var b1;
}
a //a is not defined,外部的a不能访问到上面块中定义的a变量
b //1let不存在…let 命令 es6新增了let命令用于声明变量与var用法类似但是使用let声明变量只在它所在的块内有效而var则是定义的全局变量 {let a10;var b1;
}
a //a is not defined,外部的a不能访问到上面块中定义的a变量
b //1let不存在变量提升提升 //使用var会发生变量提升当脚本开始运行使用var命令声明的变量已经存在
console.log(foo); //undefined
var foo2;console.log(foo); //报错ReferenceError
let foo2;
//使用let声明声明的变量一定要在声明之后使用否则会报错 let不允许重复声明 let不允许在相同作用域内重复声明同一个变量 //报错
function(){let a10;var a1;//let a3;
} const命令 const用于声明常量并且该常量那个是只读常量一旦声明该常量就不能被更改 const a1;
a //1
a2; //报错 并且const只声明不赋值也会报错。 const a; //报错 const变量和let一样只能在声明之后使用并且命令生命的变量也不会提升,同样也不可以重复声明。 const本质 const的常量不能够更改实质上并不是变量的额值不能更改而是变量指向的内存地址不能变动。 块级作用域 es5只有全局作用域和函数作用域但是没有块级作用域。 没有块级作用域导致的问题 内层变量可能会覆盖外层变量用来计数的循环变量泄露为全局变量 for(var i0;i10;i){console.log(i)
}
console.log(外部i)
初出结果
1
2
3
4
5
6
7
8
9
外部10 可以看出外部的i会受到循环体中i的影响如果使用let就会有块级作用域最后就会显示外部i不能找到就会报错。 es6的块级作用域 在块级作用域中外层作用域不能访问内层作用域的变量但是内层作用域可以定义外层作用域的同名变量。 function example(){let n5;if(true){let n10; //内层作用域可以和外层作用域声明同名变量}console.log(n); //5外层作用域不会受到内层作用域的影响
} 块级作用域与函数声明 在es5中规定函数只能在顶层作用域和函数作用域之中声明不能再块级作用域中声明。但是es6有所改变 允许在块级作用域内声明函数函数声明允许类似var会提升到全局作用域或函数作用头部。函数声明会提升到块级作用域头部但是es6规定在块级作用域中声明函数类似于let在块级作用域之外不能引用。但是需要避免在块级作用域中声明函数一定要使用函数表达式形式写而不是韩红素声明语句 //函数声明语句
{let atestfunction(){return a;}
}//函数表达式
{let atest;let ffunction(){return a;};
}
//并且块级作用域一定要有大括号才能声明函数 转载于:https://www.cnblogs.com/zzzha/p/9435790.html