首页 > 解决方案 > JavaScript 模板字面量和隐式强制转换

问题描述

"x"为了满足以下条件,应该分配什么值:

// let x = ?; 

console.log(`${x}` != '' + x) // true
console.log(`${x}` !== '' + x) // true

标签: javascriptcoerciontemplate-literals

解决方案


像这样的东西可以工作,但很棘手,对象的方法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


推荐阅读