玩儿玩儿ES6—第一期
一、背景
ES6全称:ECMAScript6.0。它是一个国际标准,其实简单理解就是第六版JavaScript。为什么要说这一块内容呢?因为ES6确实好用,综合了很多java这种强类型语言的特点,又保留了本身弱语言操作的便捷性。所以呢,后续一起学习一下ES6吧。
说明一下哈:我准备跟以前版本的JS比较着来学习,这样理解会更深刻一点吧。
二、核心内容
1.变量声明
ES5及之前:var关键字。
ES6.0:let const。
解释:简单的一个变量声明,蕴含着很多知识。ES5之前没有块作用域,所以,使用var声明变量会出现“变量泄露”问题。而ES6可以很容易解决。(当然,用ES5的语法也是可以解决的,只是相对复杂。)
例一:
es5写的js
var name = 'zach';
while (true) {
var name = 'obama';
console.log(name);
break;
}
console.log(name);
执行结果
结论:内层{}的var变量值泄露到了括号外面。
解决:闭包解决
var name = 'zach';
(function(){
while (true) {
var name = 'obama'
console.log(name) //obama
break
}})();
console.log(name) //obama
执行结果:
大家可以看出结果的差距了吧。ES5中面对这种问题就是用闭包来解决的。那么到底什么是闭包。后面我会给大家细细讲讲。
es6写的js:
let name = 'zach';
while (true) {
let name = 'obama'
console.log(name) //obama
break
}
console.log(name) //obama
执行结果:
结论:let声明的变量相对于var添加了块作用域。什么叫块?其实{}包裹起来就叫块。
下面来谈谈闭包:闭包其实不难理解。var声明的变量没有块作用域,但是es5中是有函数作用域的。闭包其实就是将块变成函数,处理其作用域。
再看一个例子:
es5原生:
es5闭包解决之:
es6的写法:
大家看出其中的玄妙了吗?总之ES6提供的let关键字省去了很多逻辑上的麻烦。
再说:const。这个顾名思义就是在js中定义静态变量。相对于var变量,const变量一旦定义则不可修改。保证了一些变量的安全。
三、总结
本节我们主要是将说s6定义变量的事。但是其中穿插了一个很重要的概念:“闭包”。不管它有多难,我想以后再也不用鼓捣它了。ES6已经来了。
关注关注我吧!一起学习IT更多的知识。