js中三中定义变量的方式var、let、const的区别
var
使用var可以定义全局变量,没有块级作用域的概念,比如:for循环中用var定义的变量,在for循环结束之后依然可以使用
for(var i=0;i<10;i++){}
console.log(i);//10
var 定义的变量存在变量提升,无论实际定义的位置,都会视为在全局作用域(或者函数顶部)
console.log(a);//undefined
var a = 1;
//实际相当于
var a;
console.log(a);
a = 1;
let
let 是块级作用域,不存在变量提升,如果在定义之前使用变量的话就会报错
在let 声明变量之前,该变量都是不可用的,在语法上,称为 暂时性死区
console.log(num);
let num = 10;
let 在同一作用域内不能重复定义,重复定义会报变量已声明的错误
let num = 1;
let num = 2
因为let 是块级作用域,所以在函数内部重新定义之后不会改变函数外部的值
let num = 1;
function test(){
let num = 2;
}
test();
console.log(num);//1
const
const 也是块级作用域,在定义的时候必须赋值,而且定义之后不允许再修改
//如果定义的时候没有赋值,则会报错
const num;
//块级作用域
const num = 1;
function test(){
const num = 2;
}
test();
console.log(num);//1