前言:
以前我们在声明时只有一种方法, 就是使用 var 来进行声明, ES6 对声明的进行了扩展, 现在可以有三种声明方式了.
字面理解 ES6 的三种声明方式:
var: 它是 variable 的简写, 可以理解成变量的意思.
let: 它在英文中是 "让" 的意思, 也可以理解为一种声明的意思.
const: 它在英文中也是常量的意思, 在 ES6 也是用来声明常量的, 常量你可以简单理解为不变的量.
var 声明:
var 在 ES6 里是用来升级全局变量的, 我们可以先作一个最简单的实例, 用 var 声明一个变量 a, 然后用 console.log 进行输出.
- var a='rong';
- console.log(a); //rong
我们可以看到 rong 在控制台已经被打印出来了. 那如何理解它的作用是声明全局变量那? 我们用匿名函数给他进行一个包裹, 然后在匿名函数中调用这个 a 变量, 看看能不能调用到.
- var a="rong";
- Windows.onload= function(){
- console.log(a); //rong
- }
可以看到控制台输出了 rong, 这证明 var 确实是全局的. 如果你觉的这个不够直观说明 var 是全局声明, 还可以用区块的方式进行调用测试, 先看下面的代码.
- var a=2;
- {
- var a=3;
- }
- console.log(a); //3
这时打印出来的值是多少那? 对, 应该是 3, 因为 var 是全局声明的.
** let 局部声明 **
通过两个简单的例子, 我们对 var 的全局声明有了一定了解. 那跟 var 向对应的是 let, 它是局部变量声明. 还是上面的例子, 我们试着在区块里用 let 声明.
- var a=2;
- {
- let a=3;
- }
- console.log(a); //2
这时候控制台打印出来的值就是 2 了. 如果我们只在区块里声明, 不再外部声明, 我们打印 a 时就会报错, 显示找不到变量.
- {
- let a=3;
- }
- console.log(a); //a is not defined
上面两个例子说明了 let 是局部变量声明, let 声明只在区块内起作用, 外部是不可以调用的.
** 用 Let 声明的循环 **
- for(let i=0;i<10;i++){
- console.log('循环体中:'+i);
- }
- console.log('循环体外:'+i);
你执行时会发现控制台报错了, 找不到循环体外的 i 变量. 通过两种声明的比较, 可以明白 let 在防止程序数据污染上还是很有用处的. 我们要努力去习惯用 let 声明, 减少 var 声明去污染全局空间, 在 vue 的使用中也要注意这点.
** const 声明常量 **
在程序开发中, 有些变量是希望声明后在业务层就不再发生变化了, 简单来说就是从声明开始, 这个变量始终不变, 就需要用 const 进行声明.
我们来一段用 const 声明错误的代码, 在错误中学习 const 的特性也是非常好的.
- const a="rong";
- var a='蓉';
- console.log(a);
在编译这段代码的过程中, 你就会发现已经报错, 无法编译了, 原因就是我们 const 声明的变量是不可以改变的. const 是很好理解的
来源: http://www.bubuko.com/infodetail-3194206.html