ECMAScript 6.0(以下简称 ES6)是 JavaScript的新一代标准,于2015年6月发布,此文对此标准进行解读,可以理解为是有js基础的语法学习。
1.变量声明
在前面版本中使用var声明变量,ES6添加了声明变量关键字 let ,let声明的变量只在代码块中生效。
注意:for循环中存在子作用域,会发生覆盖:
for (let i = 0; i < 3; i++) { let i = 'abc' console.log(i) }// 输出三个abc
var存在变量提升现象,即变量在声明前调用不会报错,而是会输出为undefined。
当在var声明变量区间中的代码块使用let或const声明其他变量时,该代码块会变成暂时性死区,不允许有变量提升现象存在。
var a='abc' { console.log(a) //会报错 let a='abcd' }
相同的作用域内,不允许let重复声明同名变量
var a='abc' let a='abcd' //会报错 ---------------------------------- let a='abc' let a='abcd' //会报错
const声明为常量,不可改动,不可以只声明不赋值,使用方式同let
ES6共有六中变量声明方法 let var const function import class
顶层对象获取
// 方法一(typeof window !== 'undefined' ? window : (typeof process === 'object' && typeof require === 'function' && typeof global === 'object') ? global : this) // 方法二var getGlobal = function () { if (typeof self !== 'undefined') { return self } if (typeof window !== 'undefined') { return window } if (typeof global !== 'undefined') { return global } throw new Error('unable to locate global object') };
2.解构赋值
ES6提供的全新赋值方式
let a = 1 let b = 2 let c = 3 //旧 let [a, b, c] = [1, 2, 3] //ES6 类似于“模式匹配”的解构赋值 左右须格式相同 等号右边须为数组结构 let [x, y = 'b'] = ['a'] // x='a', y='b' 可以有默认值 let [a=1, b=1] = [null,undefined] // a=null,b=undefined
还可以对数组、对象等采取这种赋值方式,在这不赘述。