美文网首页
ES6(部分)

ES6(部分)

作者: fortunatelys | 来源:发表于2017-06-24 17:08 被阅读0次

    严格模式

    ES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";。

    严格模式主要有以下限制。

    变量必须声明后再使用 例如:let

    函数的参数不能有同名属性,否则报错 例如:const let

    不能使用with语句

    不能对只读属性赋值,否则报错 例如:const

    不能使用前缀0表示八进制数,否则报错

    不能删除不可删除的属性,否则报错 例如:数组的length

    不能删除变量delete prop,会报错,只能删除属性delete global[prop]

    eval不会在它的外层作用域引入变量

    eval和arguments不能被重新赋值

    arguments不会自动反映函数参数的变化

    不能使用arguments.callee

    不能使用arguments.caller

    禁止this指向全局对象

    不能使用fn.caller和fn.arguments获取函数调用的堆栈

    增加了保留字(比如protected、static和interface)

    2、let 与 const

    es5中的var变量 , 1)没有块级作用域;2)指向全局,可以解析和变量的提前声明;3)可以相互覆盖

    es6中的const 主要是为了让变量更加安全,不会相互覆盖(只读属性)

    es6中的let 1)没有解析与变量的提前声明,只能声明后调用; 2)不指向全局,块级作用域,作用域更安全;3)不能重复声明,否则会报错

    箭头函数注意的四点:

    (1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

    (2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

    (3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。

    (4)不可以使用yield命令,因此箭头函数不能用作Generator函数。

    绑定this

    箭头函数可以绑定this,显示绑定this的写法(call、apply、bing),call、apply的作用就是能够改变this的指向

    继承:原型继承、原型链继承、call/apply继承

    ES6 模块之中,顶层的this指向undefined,即不应该在顶层代码使用this。

    import是静态执行,所以不能使用表达式和变量,这些只有在运行时才能得到结果的语法结构。

    require是运行时加载模块,import命令无法取代require的动态加载功能。

    import和export命令只能在模块的顶层,不能在代码块之中(比如,在if代码块之中,或在函数之中)。

    相关文章

      网友评论

          本文标题:ES6(部分)

          本文链接:https://www.haomeiwen.com/subject/ebpkcxtx.html