ES6 学习笔记

整理于 阮一峰 ECMAScript 6 入门

 

1.let命令:用来声明变量。类似于var。但是所声明的变量只在let所在的代码块(带大括号的基本上都是代码块)内有效

  适合场景:1.局部变量,2.for循环的计数器

  跟var不同之处:解决var的变量提升BUG(即没有用var定义的变量 使用的话会是undefined,而不会报错)

var tmp = 123;

if (true) {
  tmp = 'abc'; // ReferenceError 报错 即使有一个全局变量tmp,但是下面有let定义tmp 就会形成一个对于tmp的暂时性死区(外界对于tmp的影响减为0)
  let tmp;
}

 

2.const命令:声明一个只读的常量,一旦声明,常量的值就不能改变(改变的话会报错,,如果只声明 不赋值的话,也会报错,因为需要一旦声明,就要立即初始化)

  有效性:只在声明所在的块级作用域内有效。(跟let一样,也只能在声明之后使用,否则报错,也存在暂时性死区)

  特点:声明一个不是变化的值,本质是变量指向的那个内存地址所保存的数据不得改动

 

3.解构赋值(等号两边类型一致,否则报错):即按照一定模式,从数组和对象中提取值,对变量进行赋值,如果解构不成功的话,变量的值就等于undefined(变量没值的时候)

  解构赋值允许指定默认值。

  用途:

    1.交换变量的值

    2.函数返回多个值的时候

    3.函数参数的定义的时候

    4.提取JSON数据的时候

    5.函数参数的默认值:避免在函数体内部写一些 类似 var foo = config.foo || 'default foo' 设置默认值的语句

 

4.字符串的扩展

  1.允许采用“\u****”形式标识一个字符,可以将码点放入到大括号中,就可以规避一些问题

"\u{20BB7}"
// "𠮷"

"\u{41}\u{42}\u{43}"
// "ABC"

let hello = 123;
hell\u{6F} // 123

'\u{1F680}' === '\uD83D\uDE80'
// true

  2.新增string.codePointAt() 能够返回对应的unicode码值,用于处理原先的charCodeAt可能会出现的问题

let s = '𠮷a';

s.codePointAt(0).toString(16) // "20bb7"
s.codePointAt(2).toString(16) // "61" 这个是一个bug 需要记住

 

  3.新增 String.fromCodePoint() 用于码点--对应字符的转换。用于处理原先String.fromCharCode可能会出现的问题

String.fromCodePoint(0x20BB7)
// "𠮷"
String.fromCodePoint(0x78, 0x1f680, 0x79) === 'x\uD83D\uDE80y'
// true 

 

  注意:fromCodePoint方法定义在String对象上,而codePointAt方法定义在字符串的实例对象上。

  4.字符串的遍历(for...of...)

5.数值的扩展

  1.二进制和八进制表示法

    二进制:0b开头   八进制:0o开头

  2.Number.isFinite()和Number.isNaN()

       Number.isFinite():用来检查一个数值是否为有限的,false表示Infinity

    注意:如果参数类型不是数值的话,一律返回false

    Number.isNaN():用来检查一个值是否为NaN,非NaN一律返回false

  3.Number.parseInt(), Number.parseFloat() 

    区别:ES6 将全局方法parseInt()parseFloat()移植到Number对象上面,行为完全保持不变

  4.Math 对象的扩展

    1.Math.trunc():用于去除一个数的小数部分,返回整数部分,,对于非数值,内部使用Number方法将其先转化为数值,,对于空值和无法截取整数的值,返回NaN

    2.Math.sign()方法用来判断一个数到底是正数、负数、还是零。对于非数值,会先将其转换为数值。

      它会返回五种值。

        参数为正数,返回+1

        参数为负数,返回-1

        参数为 0,返回0

        参数为-0,返回-0;

        其他值,返回NaN

    3.Math.cbrt()方法用于计算一个数的立方根。

  5.指数运算符

let a = 1.5;
a **= 2;
// 等同于 a = a * a;

let b = 4;
b **= 3;
// 等同于 b = b * b * b;

 

  

 

posted @ 2018-08-24 11:08  前端__小川  阅读(205)  评论(0)    收藏  举报