ES6

2016-11-08  本文已影响0人  Ray1214

变量声明:


除了 var ,我们现在还可以使用两个新的标示符来定义一个变量 ——letconst。它们的区别:

  1. letconst不存在变量提升(需先声明再使用);
  2. const声明的为常量,不可重复赋值(重复赋值会失败但不会报错);
  3. 重复声明用const定义的变量会报错;
  4. 通过var声明的变量在函数内都是可用的,而通过let声明的变量则只属于就近的花括号括起来的语句块(属于块级作用域);
使用 var 的栗子:
//函数作用域内也声明了snack变量,变量得到提升。因if没有执行,所以snack的值为undefined
var snack = 'Meow Mix';

function getFood(food) {
    if (food) {
        var snack = 'Friskies';
        return snack;
    }
    return snack;
}

getFood(false); // undefined
使用let的栗子
//let声明不提升,if未执行,等同于函数作用域内没有声明snack变量,会向作用域链上级查找
let snack = 'Meow Mix';

function getFood(food) {
    if (food) {
        let snack = 'Friskies';
        return snack;
    }
    return snack;
}

getFood(false); // 'Meow Mix'

立即执行函数:

//平时我们是这样处理的
(function( doc ){
    var tit = doc.title;
})( document );
console.log( tit );        //Reference Error
//es6自执行函数:
{
    let tit= document.title;
}

console.log( tit ); // Reference Error

解构:


var [a, b, c] = [1, 2, 3]; let [head, ...tail] = [1, 2, 3, 4]; head // 1 tail // [2, 3, 4]
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值;

Math新增方法:


Math.trunc()
Math.trunc方法用于去除一个数的小数部分,返回整数部分。

 Math.trunc(4.1) // 4
 Math.trunc(4.9) // 4
 Math.trunc(-4.1) // -4
 Math.trunc(-0.1234) // -0
 Math.trunc('123.456')// 123
 Math.trunc(NaN);  // NaN
 Math.trunc('foo');  // NaN
 Math.trunc();  // NaN

Math.sign()
Math.sign方法用来判断一个数到底是正数、负数、还是零。

  Math.sign(-5) // -1
  Math.sign(5) // +1
  Math.sign(0) // +0
  Math.sign(-0) // -0
  Math.sign(NaN) // NaN
  Math.sign('foo'); // NaN
  Math.sign();  // NaN

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

  Math.cbrt(-1) // -1
  Math.cbrt(0)  // 0
  Math.cbrt(1)  // 1
  Math.cbrt(2)  // 1.2599210498948734
  Math.cbrt('8') // 2
  Math.cbrt('hello') // NaN

Math.hypot()
Math.hypot方法返回所有参数的平方和的平方根

  Math.hypot(3, 4);  // 5
  Math.hypot(3, 4, 5);  // 7.0710678118654755
  Math.hypot();  // 0
  Math.hypot(NaN);  // NaN
  Math.hypot(3, 4, 'foo'); // NaN
  Math.hypot(3, 4, '5');  // 7.0710678118654755
  Math.hypot(-3);  // 3

数组的扩展:


Array.from()
方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。

Array.of()
方法用于将一组值,转换为数组。

  Array.of(3, 11, 8) // [3,11,8]
  Array.of(3) // [3]
  Array.of(3).length // 1

数组实例的copyWithin()
数组实例的copyWithin方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。

  [1, 2, 3, 4, 5].copyWithin(0, 3)// [4, 5, 3, 4, 5]

数组实例的find()和findIndex()
数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。

  [1, 4, -5, 10].find((n) => n < 0)// -5

数组实例的fill()
fill方法使用给定值,填充一个数组。

  ['a', 'b', 'c'].fill(7, 1, 2)// ['a', 7, 'c']
  ['a', 'b', 'c'].fill(7)// [7, 7, 7]

上一篇下一篇

猜你喜欢

热点阅读