共计 3018 个字符,预计需要花费 8 分钟才能阅读完成。
1. 解构
let [a, b, c] = [1, 2, 3];
console.log(a);
console.log(b);
console.log(c);
let arr = [1, 2, 3];
let brr = […arr];
console.log(brr)
let a = [1, 2, 3];
let [b, …c] = a;
console.log(b)
console.log(c)
let [x = 1] = undefined;
console.log(x)
// 默认值只有在解构的值严格等于 undefined 时才能赋值
let [y = 1] = [undefined];
console.log(y) // 1
let = [null];
console.log(c) // null
function fn() {
console.log(“aaaaa”)
}
let [x = fn()] = [1];
console.log(x) // 1 官方说默认值是惰性求值的 也可以理解为 先执行右边的值是否等于 undefined 相等才会执行 fn() 方法
// 默认值也是可以引用变量的 但是那个变量必须已经声明
let [a = 1, b = a] = [10];
console.log(a) // 10
console.log(b) //10 先算右边
let [a = b, b = 1] = [, 10]
console.log(a) // 报错 b is not defined 因为在计算 a 时 b 还没有声明
console.log(b)
let x;
({
x
} = {
x: 1
});
console.log(x)
// 数字和布尔值的结构 只要是解构赋值都会先把右边转换成对象来解析
let {
s
} = 123; //Number.prototype.s 转成对象
let {
a
} = true; //Boolean.prototype.a 转成对象
console.log(s) // undefined
console.log(a) // undefined
2. 函数参数的解构
function add([x,y]){
console.log(x+y);
}
add([1,2]) //3
function move({x=0,y=0}={}){
console.log([x,y])
}
move({x: 3, y: 8}); // [3, 8]
move({x: 3}); // [3, 0]
move({}); // [0, 0]
move(); // [0, 0]
3. 字符串扩展
let h = “hello world!”
String.includes(str) // 判断字符串是否含有该字符 返回布尔值
console.log(h.includes(“e”)); // 直接返回 bolean 类型
String.startsWidth(str) // 判断是否以 str 开头的字符串 返回布尔值
console.log(h.startsWith(“e”)); // 判断是不是以该字符串开头
String.endsWidth(str) // 判断是否以 str 开头的字符串 返回布尔值
console.log(h.endsWith(‘ld!’)) // 判断是不是以该字符串结尾
let a = “x”;
String.padStart(num, str) // 自动补全 num 为在开头补全到 num 位字符串
console.log(a.padStart(2, “abcd”)) // ax
console.log(a.padStart(3, “abcd”)) // abx
let date1 = ’12’.padStart(10, ‘YYYY-MM-DD’) // “YYYY-MM-12”
let date2 = ’09-12′.padStart(10, ‘YYYY-MM-DD’) // “YYYY-09-12”
console.log(date1)
console.log(date2)
String.padEnd(num, str) // 自动补全 num 为在结尾补全到 num 位字符串
console.log(a.padEnd(2, “abcd”)) //xa
console.log(a.padEnd(3, “abcd”)) //xab
String.trim() // 去除字符串前后空白
let a = ` hello world ! `;
console.log(a)
console.log(a.trim()) // 去除字符串前后空格
4. 数值扩展
Number.isNaN(num) // 判断是否是非数字 返回布尔值
console.log(Number.isNaN(1)) //false
console.log(Number.isNaN(“weqewqlalala”-0)) //true
console.log(Number.isNaN(true)) //true
Number.isFinite(num) // 判断是否为有限数字 返回布尔值
console.log(Number.isFinite(10)) //true
console.log(Number.isFinite(NaN)) //false
console.log(Number.isFinite(“a”)) //false
Number.parseInt(num) // 以前挂载在 window 上现在挂载在 Number 对象上(不是四舍五入 而是去掉小数点后面所有小数)
console.log(Number.parseInt(1.22222)) // 1
console.log(Number.parseInt(1.9999)) // 1
console.log(Number.parseInt(“aaaa”)) // NaN
Number.parseFloat(num) // 以前挂载在 window 上现在挂载在 Number 对象上
console.log(Number.parseFloat(“1.22a”)) // 1.22
console.log(Number.parseFloat(“aaaaa”)) //NaN
Number.isInteger(num) // 判断数字是否为整数 返回布尔值
console.log(Number.isInteger(10)) //true
console.log(Number.isInteger(10.1)) //false
console.log(Number.isInteger(NaN)) //false
Math.trunc(num) // 去掉小数 返回整数(个人感觉与 Number.parseInt() 差不多,没什么卵用)
console.log(Math.trunc(10.333)) // 10
console.log(Math.trunc(10)) // 10
console.log(Math.trunc(NaN)) // NaN
console.log(Math.trunc(“a”)) // NaN
console.log(Number.parseInt(10.333)) // 10
console.log(Number.parseInt(10)) // 10
console.log(Number.parseInt(NaN)) // NaN
console.log(Number.parseInt(“a”)) // NaN
Math.sign(num) // 判断数字是正数,负数,0 正数返回 1 负数 返回 -1 0 返回 0 - 0 返回 -0
console.log(Math.sign(10)) // 1
console.log(Math.sign(-10)) // -1
console.log(Math.sign(0)) //0
console.log(Math.sign(-0)) // -0