我也觉得自己写的有些杂了
从Node->Vue的部分解析->React的功能
现在到Es6了 我会把Vue和Es6同步更新的
其实Es6我还是推荐大家去观看手册
但为了方便读者可以多方理解和了解到Es6,我还是写一部分ECMAScript6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
ES6都做了哪些扩展?
Let和const关键字
变量的解构赋值
字符串,数值的扩展
数组,对象的扩展
函数的扩展
for...of
先从let和const这两个关键字看起。
let关键字类似于var,但是他又和var有些不同,主要有两点,
避免了变量提升
只在块级作用域内起作用
复制代码
ES6, 全称 ECMAScript 6.0 ,是 JavaScript 的下一个版本标准,2015.06 发版。
ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。
其中
-
兼容问题
现在浏览器对Es6的兼容已经很好了,但是肯定还有不兼容的浏览器,目前常见的兼容转换工具是Babel。
-
什么是代码块
任何一对花括号(这玩意:{ })中的语句都属于一个块,在花括号里面用let定义的所有变量在花括号外都是不可见的,我们称之为块级作用域
-
什么是变量提升
在加载程序之前,浏览器会做一些准备工作,变量、函数表达式——变量声明,默认赋值为undefined
现在我们开始从头开始讲述Es6
1.const 与 let 变量
function getClothing(isCold) {
if (isCold) {
var freezing = 'Grab a jacket!';
} else {
var hot = 'It's a shorts kind of day.';
console.log(freezing);
}
}
复制代码
如上所示?var会带来不必要的麻烦
运行getClothing(false)后输出的是undefined,这是因为执行function函数之前,所有变量都会被提升, 提升到函数作用域顶部.let与const声明的变量解决了这种问题,因为他们是块级作用域, 在代码块(用{}表示)中使用let或const声明变量, 该变量会陷入暂时性死区直到该变量的声明被处理.
2.let、const 和 block 作用域
let 允许创建块级作用域,ES6 推荐在函数中使用 let 定义变量,而非 var:
var a = 2;
{
let a = 3;
console.log(a); // 3
}
console.log(a); // 2
复制代码
同样在块级作用域有效的另一个变量声明方式是 const,它可以声明一个常量。ES6 中,const 声明的常量类似于指针,它指向某个引用,也就是说这个「常量」并非一成不变的,如:
const ARR = [5,6];
ARR.push(7);
console.log(ARR); // [5,6,7]
ARR = 10; // TypeError
复制代码
有几个点需要注意:
let 关键词声明的变量不具备变量提升(hoisting)特性
let 和 const 声明只在最靠近的一个块中(花括号内)有效
当使用常量 const 声明时,请使用大写变量,如:CAPITAL_CASING
const 在声明时必须被赋值
复制代码
总结来讲:今天讲的东西不难理解 部分是基础概念和理论