写在前面:我们需要写作,就像大地需要雨水一样.
此篇博文是我为整理学习ES6笔记而写,主要来源是阮一峰的开源编程书<<ECMAScript6入门>> .同时添加一些我个人的思考
let和const 命令
let命令用于声明变量,但所声明的变量,只在let命令所在的代码块内有效,let很合适用于循环的计数器,for循环中设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域. let不存在变量提升,必须在声明后使用. 只要块级作用域存在let命令,它说声明的变量就绑定在了这个作用域,不再受外部影响.称为暂时性死区,这导致typeof并不是百分百的安全操作 let不允许重复声明,es6拥有块级作用域,是借助let const命令,外层作用域无法读取内层作用域的变量,内存作用域可以定义同外层作用域同名变量. const命令声明一个只读的常量,一旦声明,常量的值就不能再改变,并且声明时必须被赋值,不存在变量提升,也存在暂时性死区,不可重复声明,const实际上保证的并不是变量的值不得改动, 而是变量指向的内存地址不得改动,使用const声明对象或数组时还是可变的
函数的扩展 es6允许Wie函数的参数设置默认值,即写在函数定义的后面,参数变量是默认声明的,所以不能用let和const再次声明,使用参数默认值时函数不能有同名函数,参数默认是不传值的, 而是每次都重新计算默认值,表达式的值,参数默认值是惰性求值,参数默认值可以与结构赋值的默认值结合起来使用,通常情况,定义了默认值的函数应该是函数的尾参数, 因为这样比较容易看出到底省略了那些参数,如果函数传入undefined将触发默认参数值,而null不会触发. 指定了默认参数的函数的length属性将返回没有指定默认值的参数个数 一旦设置了参数的默认值,函数进行声明初始化时,参数会形成一个单独的作用域.利用参数默认值可以指定摸一个参数不得省略,如果省略就抛出一个错误 es6 引入rest参数,用于获取函数的多余参数,形成为...变量只要函数参数使用了默认值,解构赋值或扩展运算符,那么函数内部就不能设为严格模式 函数的name属性,返回该函数的函数名. es6允许使用箭头=>定义函数,如果箭头函数不需要参数或需要多个参数就使用一个圆括号代表参数部分,箭头函数可以与变量结构使用,箭头函数可以简化函数回调函数,使用时需注意几点 1:函数体内的this对象,就是定义时所在的对象而不是使用时所在的对象 2:不可以当做构造函数,也就是说,不可以使用new命令 否则报错 3:不可以使用arguments对象,该对象在函数体内不存在,可用rest参数代替 4:不可以使用yield命令,因此箭头函数不能用作Genertor函数