在es5中平常工作中,我们声明变量的方式基本就是两种如下
var a = '';
b
以上的两种申明变量的方式在之前的ES5中都可以这么做。前者声明的变量a进行了初始化,默认情况下a是为空的字符串。b变量未给任何的前置申明,在前端面试中最喜欢问到的就是这个。其实这么写的话,该变量就是全局变量。在js的它以后都可以访问到它。
let
块级作用域
let命令是在ES6中新增的命令,用于申明变量。在某些情况下,基本等同于ES5中的var。但是你运行如下的代码。会发现神奇的地方。
{
var a = 2;
let b = 3;
}
console.log(a); // 2
console.log(b); // 报错
在上上面明明已经申明了,但是在打印b变量的时候还是会报错呢?因为在ES6中,let命令是将该变量锁定在该块内。在该块外部是无法访问该变量。
为什么需要块级作用域变量呢?看下面的例子
var temp = new Date();
function fun(){
var temp = '字符串';
}
fun()
console.log(temp) // 字符串
如果没有块级作用域的情况下,会存在外部的变量被内部影响。
变量提升
let不像var那样会发生变量提升的现象。所以变量一定要在申明后使用,否则报错摘自阮一峰大神的ES6标准入门一书中,其实在现在我写的ES5中变量也是不能未申明使用的。
不允许重复申明
let不允许在同一个作用域内重复申明一个变量,如下代码是不被允许的
function fun(){
let a = 1;
var a = 2; // 报错
}
const
const与let唯一的区别就在于,该命令申明的变量是只读的,无法修改。如果修改则会报错。同时该命令申明的变量也是在该作用域内有效。
const array = [];
array.push('222') //报错
本文介绍了ES5与ES6中变量申明的区别,包括var与let的不同之处,探讨了块级作用域的重要性,并解释了const命令的用法。
1039

被折叠的 条评论
为什么被折叠?



