代码之家  ›  专栏  ›  技术社区  ›  Å ime Vidas Zim84

JavaScript中用作标点符号的空格字符

  •  8
  • Å ime Vidas Zim84  · 技术社区  · 14 年前

    在ECMAScript规范的第7.7章(标点符号)中( http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

    我知道可以插入空格字符 任选 但是,在JavaScript代码中的标记之间(为了提高可读性),我想知道它们实际上在哪里 ...

    为了找到这一点,我在jQuery库的缩小版中搜索了空格字符。以下是我的研究结果:

    必修的 ... (见下面的更新)

    ... 在关键字和标识符之间:

    function x(){}
    var x;
    return x;
    typeof x;
    new X();
    

    ... 在两个关键字之间:

    return false;
    if(x){}else if(y){}else{}
    

    注意:字符串文本中的空格字符不被视为标点符号(显然)。

    更新: 事实证明,空格字符是 在这些情况下是必需的。例如,关键字标记和标识符标记必须用 某物 某物 不必是空格字符。它可以是任何不是标记的输入元素( WhiteSpace LineTerminator Comment ).

    也。。。 空白 输入元素,而不是标记,这意味着 不是标点符号

    3 回复  |  直到 14 年前
        1
  •  1
  •   Crozin    14 年前

    空白是 function new newFunction .

    每个关键字都必须以某种方式分隔-空白是最合理和可读的,但是可以替换它们:

    return/**/false;
    return(false);
    
        2
  •  4
  •   T.J. Crowder    14 年前

    我不认为差距是一个空间,不,我认为它只是一个差距(一个不幸的差距)。如果他们真的想列出一个空格,我想他们会使用“ “就像他们在文件中的其他地方一样。但是空白作为 标点符号 没什么意义。

    分隔符 function x 因为否则你就有代币了 functionx ,当然不是关键字(尽管它可以是名称标记,例如变量、属性或函数名)。

    保留词 识别名 识别器启动 识别零件 ,不包含空格或标点符号的类。其他代币( 例如)我们可以不使用分隔符识别。我想就是这样了,所以你的两条规则差不多就是同一条规则的两个例子: 必须用空格、标点符号、文件开头或结尾…分隔。

        3
  •  0
  •   Alin P.    14 年前

    这只是一个猜测,但我要说的是,实际上任何地方都不需要空间。它们被用作在关键字之间生成单词边界的许多替代方法之一。这意味着你可以用其他字符替换它们。


    以下内容与您的需求并不完全相关,但您可能会发现它很有趣。你可以给自己写一些例子,这样他们就不再有这些空间了。我希望这些例子都没有错。

    x=function(){} function x(){}
    this.x=null; 而不是 var x;
    return(x); 而不是 return x;
    typeof(x); 而不是 typeof x;
    y=X(); y = new X();
    return(false) 而不是 return false
    if(x){}else{if(y){}else{}} 而不是 if(x){}else if(y){}else{}