JavaScript模板文本和隐式强制

JavaScript模板文本和隐式强制,javascript,coercion,template-literals,Javascript,Coercion,Template Literals,为满足以下条件,应将什么值分配给“x”: // let x = ?; console.log(`${x}` != '' + x) // true console.log(`${x}` !== '' + x) // true 类似的方法可以工作,但很棘手,x对象的方法toString()会在每次调用时更改其内部状态并返回它。发生这种情况的原因是,当尝试将x强制转换为字符串(如果找到该对象,将使用该对象的toString()方法)时,该方法会生效 设x={ 柜台:1,, toString:(

为满足以下条件,应将什么值分配给
“x”

// let x = ?; 

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

类似的方法可以工作,但很棘手,
x
对象的方法
toString()
会在每次调用时更改其内部状态并返回它。发生这种情况的原因是,当尝试将
x
强制转换为字符串(如果找到该对象,将使用该对象的
toString()
方法)时,该方法会生效

设x={
柜台:1,,
toString:()=>x.计数器++
}
控制台日志(“”+x);
log(`${x}`);
console.log(`${x}`!=''+x)//true

console.log(`${x}`!==''+x)//true
我真的认为第一种情况是不可能的。嗨,欢迎来到StackOverflow。在社区能够帮助您之前,我们需要知道您尝试了什么以及为什么没有帮助-请编辑问题,以提供您迄今为止的思考过程。谢谢。写一些关于你的问题的更多信息。第一个和第二个案例都是重复的。谢谢@Shidersz这个答案当然符合条件。请你解释一下发生了什么,或者指向我可以阅读的资源。你还知道满足这个条件的其他情况吗?虽然这肯定“有效”,但它绝对没有实际价值。如果
x
与它本身不一样,那么尝试比较有什么意义呢?如果你不顾一切地想证明这一点,甚至不关心
x
的价值是什么?@ebv当然,你可以在这里找到很多解释:。“但是你也需要读一下。”克莱斯我同意你的看法,这听起来更像是一个面试问题。