es6:
浅析let、var、const
let:
1、使用let声明的变量不能重复声明
2、使用let声明的变量不存在变量提升
3、使用let声明的变量不会成为window的属性
4、使用let声明的变量具有块作用域
es6单独提供了一种设置块作用域的方式。
{
let num=100;
console.log(num,'这是在块作用域内部访问的')
}
console.log(num,'这是在块作用域外部访问的')
const是ES6中提供的设置常量的方式,设置的量不能修改。
1、const声明的常量不能重新赋值。
2、const声明的常量必须设置初始值。
3、不能重复声明。
4、不会成为window属性
5、不存在变量提升。
6、存在块作用域。
在ES6没有出现之前,JS是不存在块作用域的。ES6新增了let和const,使得块块作用域得以实现。
全局变量:在函数外声明的变量是全局的。
无论是var,let还是const,在函数外声明的变量都是全局的,在函数内部也可以访问。
<script>
const carName = "Volvo";
let aa = "aa";
var bb = "bb";
myFunction();
function myFunction()
{
console.log(carName);//Volvo
console.log(aa);//aa
console.log(bb);//bb
}
</script>
局部变量:在函数内部声明的变量是局部变量
当数据定义到函数内部,则该变量是局部变量。如果在函数内部不使用let,var, const关键词进行声明的变量是全局变量。
<script>
const carName = "Volvo";
myFunction();
function myFunction()
{
var aa = "aa"
bb = "bb"
console.log(aa,bb)//aa bb
}
console.log(aa,bb)//undefined bb
</script>