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
还可以对数组、对象等采取这种赋值方式,在这不赘述。


2018-12-21鱼鱼