javascript - JavaScript 模板字面量和隐式强制转换
问题描述
"x"
为了满足以下条件,应该分配什么值:
// let x = ?;
console.log(`${x}` != '' + x) // true
console.log(`${x}` !== '' + x) // true
解决方案
像这样的东西可以工作,但很棘手,对象的方法toString()
在x
每次调用时都会改变他的内部状态并返回它。发生这种情况是因为在尝试强制转换为字符串时生效的隐式强制x
(如果找到,它将使用toString()
对象的方法)。
let x = {
counter: 1,
toString: () => x.counter++
}
console.log('' + x);
console.log(`${x}`);
console.log(`${x}` != '' + x) // true
console.log(`${x}` !== '' + x) // true