【问题标题】:How to compare String and Symbol in Javascript? [duplicate]如何比较 JavaScript 中的字符串和符号? [复制]
【发布时间】:2017-12-24 05:53:51
【问题描述】:

我有一个 String 和一个用 Javascript 定义的 Symbol,具有相同的值 Hello, Stack Overflow!。我如何比较它们是否相等?我在下面尝试过的所有比较都返回 false。

var string="Hello, Stack Overflow!";
var symbol=Symbol("Hello, Stack Overflow!");

console.log(string == symbol);
console.log(string == symbol.toPrimitive);
console.log(string == symbol.toString);
console.log(string == symbol.toStringTag);
console.log(string === symbol);
console.log(string === symbol.toPrimitive);
console.log(string === symbol.toString);
console.log(string === symbol.toStringTag);

【问题讨论】:

  • 符号没有 Hello, Stack Overflow!。你的意思是它的 description 设置为那个字符串吗?

标签: javascript string comparison symbols


【解决方案1】:

您可以将字符串转换为符号,然后进行比较。

console.log(Symbol(string).toString() == symbol.toString())

【讨论】:

  • 是的,这行得通。谢谢。
【解决方案2】:

Symbol() 将始终返回唯一值 您可以使用稍有不同的方式,如下所示

Symbol.keyFor(Symbol.for("你好,堆栈溢出!"))== "你好,堆栈溢出!"; // 是的

请阅读更多 https://developer.mozilla.org/en-US/docs/Glossary/Symbol

【讨论】:

  • 没有其他更好的解决方案吗?在这个比较中根本没有使用 symbol 定义,只使用了 string
猜你喜欢
  • 2017-09-18
  • 2020-12-20
  • 1970-01-01
  • 2017-06-27
  • 2016-11-24
  • 1970-01-01
  • 2019-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多