var
之前,我们在写 js 定义变量的时候,只有一个关键字:var
但是,var 有一个问题,就是定义的变量有时候会莫名其妙的成为全局变量。
例如:
for (var i = 0; i < 5; i ++){
console.log(i);
}
console.log("循环外:" + i);
运行打印的结果如下:
可以看出,使用 var 定义变量时,它的作用域是不可控的,在循环外部也可以获取到变量的值,显然变量的作用域范围太大了。
let
let 所声明的变量,只在 let 命令所在的代码块内有效。
for (let i = 0; i < 5; i ++){
console.log(i);
}
console.log("循环外:" + i);
运行打印的结果如下:
可以看出,使用 let 定义变量时就把变量的作用域控制在了循环内部。
const
const 声明的变量是常量,不能被修改,类似于 Java 中的 final 关键字。
const str = "abc";
console.log(str);
str = "123";
console.log(str);
运行打印的结果如下: