代码之家  ›  专栏  ›  技术社区  ›  Estus Flask

符号字符串强制

  •  2
  • Estus Flask  · 技术社区  · 7 年前

    Symbol() + '' 投掷

    TypeError:无法将符号值转换为字符串

    而已知的解决方法是使用 String(Symbol())

    这看起来与其他原语不一致,包括那些几乎永远不应该被强制的原语( undefined null ).

    到底是怎么回事 String + '' (除非有效)?规范是否明确规定 一串 是否应接受符号?以一种方式允许而以另一种方式不允许的动机是什么?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Patrick Barr    7 年前

    字符串与+''的区别到底是什么(除非它工作)?规范是否明确规定字符串应接受符号?

    他们在以下方面有所不同: String() Symbol() ,鉴于 + ToString() 抛出一个 TypeError a的例外情况 符号() .

    规格:

    如果NewTarget未定义,并且Type(value)为Symbol,则返回SymbolDescriptiveString(value)。

    从…起 + 评估规范:

    • 设lstr为ToString(lprim)。
      • 返回故障(lstr)。
      • 返回故障(rstr)。
      • 返回连接lstr和rstr的结果字符串。

    lprim rprim

    符号:引发TypeError异常。

    以一种方式允许而以另一种方式不允许的动机是什么?

    String() ES6 Spec

    + operator runtime evaluation ES6 Spec

    ToString() Output behavior ES6 Spec