看代码输出
连续赋值问题
let a = {n : 1};
let b = a;
a.x = a = {n: 2};
console.log(a.x) // undefined
console.log(b.x) // {n:2}
console.log(a === b.x) // true
第三行,连续赋值时,访问 .
操作符的优先级大于 =
赋值操作符。所以 a.x
会先在 a 引用的对象上开辟一个新属性。
toString()
12.toString() // error 12. 被当做 12.0 的省略,所以这个 . 表示小数点
// 可行方法
12 .toString()
12..toString()
finally return
function foo() {
try {
console.log('bar')
return 0
} catch (err) {
console.log(err)
} finally {
console.log('finally')
}
}
// bar
// finally
// 0
console.log(foo())
如果 finally return 了值,那就只会 return finally 里面的
function foo() {
try {
console.log('bar')
return 0
} catch (err) {
console.log(err)
} finally {
return 'finally'
}
}
// bar
// finally
console.log(foo())
Last updated