ES6学习第三篇
数字类型的方法
Number.isNaN( )
判断是否为NaN类型
console.log(Number.isNaN(NaN)); // t
console.log(Number.isNaN(null)); //f
console.log(Number.isNaN(undefined)); //f
console.log(Number.isNaN(false)); //f
console.log(Number.isNaN(0)); //f
Number.isFinite( )
判断参数有限还是无限
console.log(Number.isFinite(Infinity)); //f
console.log(Number.isFinite(Math.PI)); // t 计算精度问题
console.log(Number.isFinite(1.8901238921838912098)); // t
console.log(Number.isFinite(0)); // t
console.log(Number.isFinite(null)); // f
console.log(Number.isFinite(undefined)); // f
console.log(Number.isFinite(1 / 3)); // t
Number.isInteger( )
判断参数是否为整数
console.log(Number.isInteger(1)); // t
console.log(Number.isInteger(1.123213)); // f
console.log(Number.isInteger("1")); // f
console.log(Number.isInteger("1.12312")); // f
console.log(Number.isInteger(null)); // f
console.log(Number.isInteger(false)); //f
前三个函数在进行判断时,首先判断参数是否为数字类型,如果不是则直接为false
Number.parseInt( )
解析一个字符串,返回参数的整数部分。参数通常为字符串。
console.log(Number.parseInt(1.23214));//1
console.log(Number.parseInt("1.23214")); // 1
console.log(Number.parseInt(null)); // NaN
console.log(Number.parseInt(false));// NaN
console.log(Number.parseInt(undefined));// NaN
与Math.parseInt()一样,会发生隐式类型转换,将非数字类型转换成数字类型
Math.trunc( )
用于去除一个数的小数部分,返回整数部分。参数常为数字类型
console.log(Math.trunc(1.123123)); // 1
console.log(Math.trunc("1.123123")); // 1
console.log(Math.trunc(null)); // 0
console.log(Math.trunc(undefined)); // NaN
console.log(Math.trunc(false)); // 0
console.log(Math.trunc(true)); // 1
console.log(Math.trunc('呵呵')); // N
Math.sign( )
判断参数是正数(1)、负数(-1)还是0(0)
console.log(Math.sign(0)); //0
console.log(Math.sign(1)); //1
console.log(Math.sign(-1)); // -1
console.log(Math.sign(1.12321)); // 1
console.log(Math.sign(null)); // 0
console.log(Math.sign(undefined)); // N
console.log(Math.sign(false)); // 0
console.log(Math.sign('嘿嘿')); // N
对象的方法
ES6对象属性的简洁写法
- 如果对象中属性名=属性值,且这个值已经被定义,可以省略属性值
- 对象中的函数可以省略’:function’
- 表达式可以用作属性名
var name = 'zs'
var start = 'start'
var end = 'end'
var obj = {
name,//等同于 name:name,
age: 18,
// say: function () {
// console.log(this.name);
// },
say() {
console.log(this.name);
},//等同于上面注释中的函数
[first + end]: '表达式'//两个参数拼接的表达式,中括号包起来
}
Object.is(参数1,参数2)
判断两个参数是否全等,等同于’===’
关于NaN,理论上来说NaN不等于任何值,使用全等判断两个NaN为false,但是这里使用Object.is(NaN,NaN)判断为true。
Object.assign(目标对象,源对象1,源对象2,…)
将源对象中的属性添加到目标对象中
举个栗子,把obj1添加到obj中,打印结果发现obj本身也发生了改变
var obj = {
name: 'lily',
agr: 20,
sex: '女'
}
var obj1 = {
height: '170cm',
brith: 2002
}
var objNew = Object.assign(obj, obj1)
console.log(obj);//{name: 'lily', agr: 20, sex: '女', height: '170cm', brith: 2002}
console.log(obj1);//{height: '170cm', brith: 2002}
console.log(objNew);//{name: 'lily', agr: 20, sex: '女', height: '170cm', brith: 2002}
Object.keys( )
遍历对象中的属性名
Object.values( )
遍历对象中的属性值
函数的方法
ES6中给参数赋初值
声明一个函数时,可以给形参先赋一个初值,在后续调用中,如果传递了实参则会进行覆盖初值。
function fn(a=10){
console.log(a)
}
fn();//10
fn(20)//20
…rest用法
在函数中可以使用扩展运算符表示除了传递给形参的剩余参数
扩展运算符
- 遍历数组
- 当做数组的元素
- 深拷贝
- 函数的调用
- 与解构赋值结合
- 转化成真正的数组
// 1、遍历数组
var arr = [1,2,3,4]
console.log(...arr);//1 2 3 4
// 2、当做数组的元素
console.log(["哈哈", ...arr, true]);//['哈哈', 1, 2, 3, 4, true]
// 3、用于深拷贝
var arrNew = [];
arrNew = [...arr];
console.log(arrNew);//[1, 2, 3, 4]
arr.push(50);
console.log(arr);//[1, 2, 3, 4, 50]
console.log(arrNew);//[1, 2, 3, 4]
// 4、用于函数的调用
function demo1(x, y, z, m) {
console.log(x + y + z + m);
}
demo1(arrNew[0], arrNew[1], arrNew[2], arrNew[3]);//10
demo1(...arrNew);//10
// 5、与解构赋值结合
var [a, ...arr1] = arrNew;
console.log(a, ...arr1);//1 2 3 4
// 6、转化成真正的数组
var str = "hello";
var arrStr = Array.from(str);
console.log(arrStr);//['h', 'e', 'l', 'l', 'o']
console.log(...str);//h e l l o
console.log([...str]);// ['h', 'e', 'l', 'l', 'o']