【问题标题】:JavaScript ignores extra spaces?JavaScript 忽略多余的空格?
【发布时间】:2016-01-27 07:21:20
【问题描述】:

JavaScript quiz at WsCube Tech 中,有一个问题是 JavaScript 是否会忽略多余的空格。正确答案是“错”。

JavaScript 的空白不是独立的吗?我在很多博客中都读到过。那么为什么我的答案是错误的呢?

【问题讨论】:

  • 这是一个特别糟糕的测验。许多问题的措辞模棱两可——即使是懂很多 Javascript 的人。
  • 例如,该测验对问题 6 的答案有误。Java 脚本不支持 C 样式的块级范围。 Javascript 现在有let,它是块级范围的。
  • 这个测验太可怕了,已经过时了,并且促进了不良做法。立即关闭该页面并转到其他安全的地方,例如MDN
  • 我开始相信,当测验写“Java Script”时,他们真的不是指 JavaScript。
  • 编写测验的人甚至不知道如何拼写该语言的名称——在很多地方他们都说“Java 脚本”。运行,不要离开这个测验。

标签: javascript whitespace


【解决方案1】:

说真的不会相信那个网站……

这是我可以给出的简短而充分的答案,但我想说两件事:

首先,JavaScript 不会忽略字符串中的空格:

var str = "Hello                World";

这个字符串有 16 个空格,它们不会像那样被忽略。然而,在一些运算符、关键字和标记之间,JavaScript 确实忽略了空格:

var   test  = [ 0 , 1  ,     3    ]       .  slice  (      2  )      ;

这一行被解析为

var test=[0,1,3].slice(2);

不过,vartest 之间的空格并没有被忽略。并非所有空间都是平等的。这个测验问题不能以目前的形式回答 — 好吧,或者两种形式……

其次,该测验有很多不一致的地方、虚假信息、过时的信息,并助长了不良做法。我刚刚向他们发送了一份关于测验错误的清单……

坚持使用像Mozilla Developer Network 这样更“受信任”的网站会更安全。

【讨论】:

    【解决方案2】:

    一方面,您可以通过换行来终止表达式。

    var x = 1  // no semicolon
    console.info(x)
    

    同时查看this(返回未定义):

    return
       12
    

    【讨论】:

    • return 更改分号插入规则
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2021-05-24
    相关资源
    最近更新 更多