ES6第二节:新的声明方式
通过上一节的环境搭建完成,接下来我们就可以愉快的探索ES6的新世界了!下面我们从新的声明方式开始:
在ES6里新加了两种声明方式:let 和 const,以前我们都是用var去作声明,接下来我们一一比较下他们的区别:
一、var :全局声明
我们用var 来声明一个msg的变量
1 var msg = "hello es6"; 2 console.log(msg);
这时我们可以看到控制台输出的是 hello es6,接下来我们在下面用区块的方式再声明一个msg,并给它赋值
1 var msg = "hello es6"; 2 console.log(msg); 3 { 4 var msg = "哈罗ES6" 5 } 6 console.log(msg);
此时控制台输出的是 哈罗ES6 ,这说明var并没有受区块的局部声明影响,被污染了
一、var :局部声明
我们直接拿上面的代码来作演示,将var改成let,看控制台输出的结果
1 let msg = "hello es6"; 2 console.log(msg); 3 { 4 let msg = "哈罗ES6" 5 } 6 console.log(msg);
我们看到控制台输出的结果是 hello es6,跟上面var的结果不一样,说明区块里的let声明并未受到影响,接下来我们再来看一个例子
1 var msg = "hello es6"; 2 console.log(msg); 3 { 4 let msg2 = "哈罗ES6" 5 } 6 console.log(msg2);
这次我们将区块里的msg改成了msg2,并且输出它,可是控制台却报错了:
Uncaught ReferenceError: msg2 is not defined
提示我们找不到msg2,说明msg2在区块里只是局部声明了,对外面的大环境无影响
三、const:声明常量
常量的意思是以后不会再变了,下面,我们同样用例子来说明:
1 const msg = "hello es6"; 2 3 console.log(msg); //控制台输出了 hello es6
1 const msg = "hello es6"; 2 3 var msg = "哈罗ES6"; 4 5 console.log(msg);
这次我们用npm run build编译始终报错,无法编译了,原因就是我们const声明的变量是不可以改变的
总结:
三种声明方式:
var 全局的,会污染到区块,同时区块里的也会污染到外面的
let 局部的,不会受污染,区块里的和外面的互不干扰
const 声明常量,声明后就不能改变了