
ES6
Fighon-Blog
开启优快云之旅
展开
-
1、ES6-let命令详解
let命令ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。for循环中let命令的使用:var a = [];for (var i = 0; i < 3; i++) { a[i] = function () { return i; };}console.table([ a[0],a...原创 2018-05-09 14:34:43 · 340 阅读 · 0 评论 -
2、ES6-块级作用域
ES5只有全局作用域和函数作用域,没有块级作用域。问题一:内层变量可能会覆盖外层变量。var tmp = 1;function f() { console.log(tmp); if (false) { var tmp = '2'; }}f(); // undefined 问题二:用来计数的循环变量泄露为全局变量。for循环结束后,变量i,它并没有消失,而是泄露成了全局变量...原创 2018-05-09 15:47:52 · 172 阅读 · 0 评论 -
3、ES6-const命令
const声明一个只读的常量。一旦声明,常量的值就不能改变。const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能...原创 2018-05-09 16:14:27 · 136 阅读 · 0 评论 -
4、顶层对象属性
顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象。ES5 之中,顶层对象的属性与全局变量是等价的。顶层对象的属性与全局变量挂钩,被认为是 JavaScript 语言最大的设计败笔之一。这样的设计带来了几个很大的问题,首先是没法在编译时就报出变量未声明的错误,只有运行时才能知道(因为全局变量可能是顶层对象的属性创造的,而属性的创造是动态的);其次,程序员很容易不知不...原创 2018-05-09 16:24:54 · 186 阅读 · 0 评论 -
5、ES6-变量的解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。1、数组的解构赋值以前为变量赋值,只能直接指定变量赋值,而ES6可以从数组中提取值,按照对应的位置对变量赋值;//解构let a = 2;let b = 3;//es6 可以写成let [a , b ] = [2 , 3];本质上,这种写法属于“模式匹配”,只要等号两边的模式相同...原创 2018-05-09 18:07:17 · 199 阅读 · 0 评论