es6中常用的语法(1)
1、let 和 const
一般情况下不会使用var 都是用 let 和 const 代替。
对比 var 来说,let和const的优点:
1、没有变量提升
2、不允许重复声明
3、有块级作用域
4、存在暂时性死
变量提升是什么?简而言之就是变量可以在声明前使用,但是值为undefined。
1、
console.log(a) // undefined
var a;
console.log(b) //报错 Cannot access 'b' before initializatio
let b;
2、
var a = 2;
var a = 3;
console.log(a); // 3
let b = 2;
let b = 3;
console.log(b); // Identifier 'b' has already been declared
3、使用let命令声明变量之前,该变量都是不可用的 意味着 typeof 是不准确的;
4、
var tmp = 123;
if (true) {
console.log(tmp);
let tmp;
}
2、解构赋值
1、解构赋值必须满足左右一一对应才可以成功
let [a, [[b], c]] = [1, [[2], 3]];
console.log(a); // 1
console.log(b); // 2
console.log(c); // 3
let {d, e} = {d:'aa', e:'bb'}
console.log(d); // 'aa'
console.log(e); // 'bb'
2、可以使用默认值
let [a = '1', b] =[undefined, 2]
console.log(a) // '1'
console.log(b) // 2
let {c = 2, d} = {d:'22'}
console.log(c) // 2
console.log(d) // '22'
3、字符串的结构赋值
const [a, b, c, d] = 'hello';
console.log(a); // h
console.log(b); // e
console.log(c); // l
console.log(d); // l
类似数组的对象都有一个length属性
let {length:len} = 'hello'
console.log(len) // 5
3、数值的拓展
1、Number.isFinite() 用来检查一个数值是否为有限的。
Number.isFinite(15); // true
Number.isFinite(0.8); // true
Number.isFinite(NaN); // false
Number.isFinite(Infinity); // false
Number.isFinite(-Infinity); // false
Number.isFinite('foo'); // false
Number.isFinite('15'); // false
Number.isFinite(true); // false
2、Number.isNaN() 用来检查一个值是否为NaN。
Number.isNaN(NaN) // true
Number.isNaN(15) // false
Number.isNaN('15') // false
Number.isNaN(true) // false
Number.isNaN(9/NaN) // true
Number.isNaN('true' / 0) // true
Number.isNaN('true' / 'true') // true
3、Number.parseInt() String转为number类型(整数)。
Number.parseInt('12.34') // 12
4、Number.parseFloat() String转为number类型(浮点数)。
Number.parseFloat('12.112111#12') //12.112111
5、Number.isInteger()用来判断一个数值是否为整数。
Number.isInteger(25) // true
Number.isInteger(25.1) // false
Number.isInteger(25.0) // true
Number.isInteger() // false
Number.isInteger(null) // false
Number.isInteger('15') // false
Number.isInteger(true) // false
4、函数的拓展
1、参数可以添加默认值
function log(x, y = 2) {
console.log(x, y); // 1, 2
}
log(1);
2、箭头函数( () => {} )
let f = () => 5;
// 等同于
let f = function () { return 5 };
//如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。
let sum = function(num1, num2) {
return num1 + num2;
};
//如果箭头函数直接返回一个对象,必须在对象外面加上括号。
let getTempItem = id => ({ id: id, name: "Temp" });// 不报错
let getTempItem = id => { id: id, name: "Temp" };// 报错
// 箭头函数的注意点
// 箭头函数没有自己的this对象
箭头函数的this指向是使用箭头函数的方法的this指