ES6 带来的新知识
什么是 ES6
- ES6, 全称 ECMAScript 6.0 ,是 JaveScript 的下一个版本标准,2015.06 发版
ECMAScript 的背景
- JavaScript 是大家所了解的语言名称,但是这个语言名称是商标( Oracle 公司注册的商标)
- JavaScript 的正式名称是 ECMAScript
- 1996年11月,JaveScript 的创造者网景公司将 JS 提交给国际化标准组织 ECMA , 随后 ECMA 发布了规定浏览器脚本语言的标准,即 ECMAScript
ES6 的出现
- 2013 年,ES6 草案冻结,不再添加新的功能,新的功能将被放到 ES7 中;2015年6月, ES6 正式通过,成为国际标准
新的声明方式
以前我们在声明时只有一种方法,就是使用var来进行声明,ES6对声明的进行了扩展,现在可以有三种声明方式了
var
:它是 variable 的简写,可以理解成变量的意思let
:它在英文中是“让”的意思,也可以理解为一种声明的意思const
:它在英文中也是常量的意思,在 ES6 也是用来声明常量的,常量你可以简单理解为不变的量
var 声明
var a='JSnice';
console.log(a);
我们可以看到 JSnice在控制台已经被打印出来了
我们用匿名函数给他进行一个包裹,然后在匿名函数中调用这个a变量,看看能不能调用到
var a="JSnice";
window.onload= function(){
console.log(a);
}
可以看到控制台输出了JSnice,这证明var确实是全局的
var a=2;
{
var a=3;
}
console.log(a);
打印出来的是 3 , 因为 var 是全局变量
let局部声明
通过两个简单的例子,我们对var的全局声明有了一定了解。那跟var向对应的是let,它是局部变量声明。
var a=2;
{
let a=3;
}
console.log(a);
输出 2
如果我们只在区块里声明,不再外部声明,我们打印a时就会报错,显示找不到变量
用var声明的循环
for(let i=0;i<10;i++){
console.log('循环体中:'+i);
}
console.log('循环体外:'+i);
控制台报错,找不到循环体外的i变量
通过两种声明的比较,可以明白let在防止程序数据污染上还是很有用处的。我们要努力去习惯用let声明,减少var声明去污染全局空间,在vue的使用中也要注意这点。
const声明常量
下面是一段用const声明错误的代码,在错误中学习const的特性也是非常好的。
const a="JSPang";
var a='技术啊';
console.log(a);
产生报错,无法编译
因为我们const声明的变量是不可以改变的