变量声明:
除了 var
,我们现在还可以使用两个新的标示符来定义一个变量 ——let
和 const
。它们的区别:
-
let
和const
不存在变量提升(需先声明再使用); - const声明的为常量,不可重复赋值(重复赋值会失败但不会报错);
- 重复声明用const定义的变量会报错;
- 通过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]
网友评论