【问题标题】:What is the result of String.fromCharCode(17)?String.fromCharCode(17) 的结果是什么?
【发布时间】:2014-08-13 04:48:49
【问题描述】:

我对这种静态方法感到困惑。使用 17 字符代码(控制键)时,我找不到将其与任何东西进行比较的方法。

Chrome 控制台:

它看起来像一个普通的空字符串。

mdn

此方法返回一个字符串,而不是一个 String 对象。

原来是这么想的

String.fromCharCode(17) === "" 将返回 true。但它返回错误。 为什么?

  • typeof(String.fromCharCode(17)) 返回“字符串”
  • String.fromCharCode(17) === null 返回错误
  • String.fromCharCode(17) === undefined 返回错误
  • 另外,为了确定,我做了String.fromCharCode(17) === new String(),它也返回了假...

我不明白...

【问题讨论】:

  • char 码 17 是 Ctrl,我想不能被计算出来。
  • 既然你知道 17 代表控制键,那是什么让你觉得它应该打印什么?
  • @BoltClock 我不希望它打印任何东西。我只是希望“任何东西”在其表示中保持一致:)
  • @Sebas 如果你想要一致性,前端 Web 开发可能不适合你;)
  • 似乎只打印参数值33 - 126的ASCII字符。

标签: javascript


【解决方案1】:

String.fromCharCode()mdn 引用不完整,

返回使用指定的 Unicode 值序列创建的字符串。

在这种情况下,不可打印字符 - ASCII 17 - 或设备控制 1。

【讨论】:

    【解决方案2】:

    所以我在想String.fromCharCode(17) === "" 会返回true。但它返回false。为什么?

    String.fromCharCode(17) 返回设备控制1,这似乎是一个不可打印的字符。它不符合条件的原因是因为它不是一个空字符串。

    String.fromCharCode(17) === String.fromCharCode(17) 将返回 true

    【讨论】:

    • 你的意思是这是一个控制台行为问题?如果它的类型实际上是一个字符串,我认为不可打印的字符会转化为某种东西
    • 不。这是正常的 JavaScript 行为。这两个字符串不等价,首先是因为它们的长度不同。
    • @Sebas:不,这就是为什么它被称为“不可打印”。
    • 对我来说存在矛盾。控制台应显示专用于不可打印字符的符号,而不是空字符串。实际上我在上面看到 IE 确实显示了其他东西......
    • @Sebas 你如何打印''? ASCII-8(退格)呢?
    【解决方案3】:

    当我尝试它显示""(非打印字符)时,它不是一个空字符串。证明见下图:

    这就是为什么String.fromCharCode(17) === "" 会返回 false。

    【讨论】:

    • 就是这个字体集不包括那个字形字形。
    【解决方案4】:

    String.fromCharCode() 方法返回一个使用指定的Unicode 值序列创建的字符串。 KeyChar 17 实际上代表我们键盘的CTR 键。所以当你写作时

    String.fromCharCode(17) , 
    

    它实际上表示的是不能用一个 16 位数字表示的字符。因此,它不是空字符串,因为它需要多个 16 位数字 unicode 值而无法显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多