ES6函数和字符串

解构赋值,
对象的解构赋值,是变量的赋值,属性名和变量名相同,属性名和变量名不同的情形,首先找到相同的属性名,再赋值给对应变量,没有就是undefined

let arr = [1, 2, 3];
let {0 : first, [arr.length - 1] : last} = arr;
first // 1
last // 3
数组本质是特殊的对象,可以对其进行对象属性的解构
属性名表达式加方括弧

如果等号右边是数值和布尔值,则将其先转为对象
let {toString: s} = 123;
s === Number.prototype.toString // true

let {toString: s} = true;
s === Boolean.prototype.toString // true
数值和布尔值的包装对象都有tostring属性
解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错。

2模板字符串
let name = “Bob”, time = “today”;
Hello ${name}, how are you ${time}?

3函数
3.1函数参数的默认值和解构赋值的结合
function foo({x, y = 5}) {
console.log(x, y);
}

foo({}) // undefined 5
foo({x: 1}) // 1 5
foo({x: 1, y: 2}) // 1 2
foo() // TypeError: Cannot read property ‘x’ of undefined

unction foo({x, y = 5} = {}) {
console.log(x, y);
}

foo() // undefined 5

3.2参数默认值的位置
有默认值的参数都不是尾参数。这时,无法只省略该参数,而不省略它后面的参数,除非显式输入undefined
如果传入undefined,将触发该参数等于默认值,null则没有这个效果

3.3length属性
length属性的含义是,该函数预期传入的参数个数。某个参数指定默认值以后,预期传入的参数个数就不包括这个参数了;
设置了默认值的参数不是尾参数,那么length属性也不再计入后面的参数了

4尾调用
function f(x){
g(x);
return undefined;
}
尾调用不一定出现在函数尾部,只要是最后一步操作即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值