今天有个同事突然问我几种声明变量的方式有何区别,想到自己也没有好好总结过,特此开贴和大家交流
常用的声明变量的方式有四种
- ES5是 var 和 function(其实function也能声明变量)
- ES6新增 let 和 const
常用的有其中三种 var let const
首先我们先列举一下 let和var 的区别
let声明的变量只在当前的代码块才能使用
代码语言:javascript复制for(let i=0;i<10;i ){
console.log(i); //有值
}
console.log(i); //undefined
关于变量提升 JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。 JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。
代码语言:javascript复制console.log(_this);//报错
let _this =100;
console.log(_this);//undefined
var_this =100;
关于重复声明 let 不允许在相同作用域内,重复声明同一个变量,也不能在函数内部重新声明参数
关于const
- const声明一个只读的常量。一旦声明,常量的值就不能改变
- const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值
- const的作用域与let命令相同:只在声明所在的块级作用域内有效
- const声明的常量,也与let一样不可重复声明
总结
声明方式 | 变量提升 | 作用域 | 初始值 | 重复定义 |
---|---|---|---|---|
const | 否 | 块级 | 需要 | 不允许 |
let | 否 | 块级 | 不需要 | 不允许 |
var | 是 | 块级 | 不需要 | 允许 |