let和var定义变量的区别
一、基本用法(let和var区别)
ES6新增了let命令,用来声明变量,它的用法类似于var,var声明的是全局变量。let声明的变量只在代码块里有效。
{
let a =10;
var b =1;
}
console.log(a); //a is not defined
console.log(b); // 1
上述代码中,分别使用let和var声明了俩个变量,然后在代码块外面调用俩个变量,结果let声明的变量报错,var声明的变量返回正确值。这表明,let声明的变量只在代码块里有效。
for循环中的计算器,很适合let声明
for (let i =0 ;i <10 ; i++){
//....
}
console,log(i) ; //i is not defined
在上述代码中。计算器i只在for循环体中有效。
for (var i =0 ;i <10 ; i++){
//....
}
console,log(i) ; //i =10
在上述代码中。变量i是全局变量。
------------------------------------------------------------------------------------------------------------------------------------
总结: 1、var属于ES5规范,let属于ES6规范。
2、var有预处理机制,let没有。 即预处理机制也就是说变量提升。
3、 作用域的不同,var是全局作用域,let是局部作用域。
注意:1、声明变量时,一定要初始化。即var a =1;
2、 即使在内部,声明变量一定要加上var,不要直接写a =1 ;否则 变量a也会被提升为全局变量。
比如说在for循环里面声明的值,就不是全局的 如:for {var a = 'xxx'}