局部变量 let
- 以前在js中, 所有的变量都是全局变量, 经常会出现变量同名, 导致局部变量覆盖全局变量的值, 发生意想不到情况. 所以es6定义了新的局部变量类型: let
let 和 var 比较
作用域
- var定义的变量全局都可以访问
- let定义的变量只在{}内能够访问
// 定义全局变量和局部变量
var a = 1;
var localVar = function (){
console.log(" a in localVar is: " + a);
let b = 1;
console.log(" b in localVar is: " + b);
}
// 打印到控制台
console.log("global a is: " + a);
console.log("local b is: " + b); // 报错 b is not defined
默认值
- 用var定义的全局变量默认值为undefined
- 用let定义的局部变量在定义前使用会报错 is not defined
// 打印到控制台
console.log("global a is: " + a); // global a is : undefined
console.log("local b is: " + b); // 报错 b is not defined
// 定义全局变量和局部变量
var a = 1;
var localVar = function (){
let b = 1;
console.log(" b in localVar is: " + b);
}
同名变量
var a = 1;
function test(){
var a = 2;
console.log("a in test is: " + a); // a变成2了
}
console.log("a in global is: " + a); // 这里还是1
- 因为用let重新定了a, 即使有一个同名的全局变量a, 在重新用let定义之前,
也会报错: a is not defined
var a = 1;
function testLet(){
// console.log("a is: " + a); // a is not defined
let a = 3;
console.log("a is: " + a); // a is: 3
}
网友评论