JavaScript源中的换行符或空格/制表符有区别吗?(甚至在评论!!)

罗吉尔

我一直以为JavaScript源代码中的所有空格(空格,制表符,换行符)都是“相等”的,即它们对于分隔标识符,关键字,运算符等语言元素都是有效的。

但是,我注意到换行符与空格或制表符之间的奇怪区别。甚至里面的评论!

可以正常工作:(在函数定义和函数调用之间换行,但不能使用分号)

var bla = function() { alert('hello') }
bla();

这也适用:(在结束字符}和bla()函数调用之间使用分号

var bla = function() { alert('hello') };bla();

但是,这是行不通的:(只有一个空格或一个制表符,还是多个或没有,都没有区别)

var bla = function() { alert('hello') } bla();

它变得更加陌生。

这也不起作用:(由包含空格,制表符和分号的注释分隔)

var bla = function() { alert('hello') } /*  ; */ bla();

但是这样做:(包含换行符的注释)

var bla = function() { alert('hello') }/*
*/bla();

现场jsfiddle演示:

这是JavaScript中的错误,还是我缺少某些东西?

斯普德利

这不只是空白行为不当,还在于Javascript的“ ASI”功能:“自动分号插入”。

首次引入时,此功能已包含在Java语言中。基本上,交易是这样的:

JS核心语言要求每个语句都以分号结尾。

但是,由于该语言是针对Web设计师(当时不被认为是程序员)的,因此如果开发人员忘记使用分号,则将解析器修改为宽松的。如果解析器认为缺少分号,但存在换行符,则会假设使用分号。

坦白地说,这在语言的设计中确实是一个非常糟糕的决定:它导致了许多已知的怪癖,这些怪癖可能导致难以调试的问题。特别是,return对于返回多行对象结构的语句,您需要非常小心,但是,正如您的问题所表明的那样,它还有许多其他方法可以使您脱颖而出。

这里要学习的课程很简单:始终在JS语句之间包括分号,即使它们看起来是可选的也是如此

如果您真的对该主题感兴趣,可以在这里阅读有关ASI的更多信息,作为Javascript程序员,了解这一点很重要。但是总的来说,如果仅包括分号,则大多数情况下都可以忽略它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从变量中删除所有空格,制表符,换行符等?

来自分类Dev

如何从jQuery Ajax Data中剥离所有空格(如空格,制表符,换行符)?

来自分类Dev

如何从字节数组中删除所有空格,换行符和制表符?

来自分类Dev

删除XML字符元素中重复的换行符/制表符/空格

来自分类Dev

从MySQL表中删除制表符,换行符等

来自分类Dev

在Vim中复制没有换行符和制表符的区域

来自分类Dev

如何让我的 C 程序忽略空格(空格、制表符、换行符)?

来自分类Dev

C中制表符,空格和空格之间的区别

来自分类Dev

C中制表符,空格和空格之间的区别

来自分类Dev

如何用REGEX匹配制表符和换行符而不是空格?

来自分类Dev

一个或多个空格,制表符或换行符的正则表达式

来自分类Dev

如何用REGEX匹配制表符和换行符而不是空格?

来自分类Dev

c K&R计算换行符,制表符和空格

来自分类Dev

使用 tr 仅转换空格,而不是制表符或换行符

来自分类Dev

计算字符串中空格、制表符和换行符数量的程序

来自分类Dev

Scala转义换行符和制表符

来自分类Dev

Excel保存制表符分隔的文件而没有换行符(UNIX / Mac os X)

来自分类Dev

制表符和换行符的ANSI C引用有时不起作用

来自分类Dev

如何从CodeIgniter中的视图替换制表符和换行符?

来自分类Dev

如何从CodeIgniter中的视图替换制表符和换行符?

来自分类Dev

如何从 .vcf 文件中删除错误的制表符/换行符?

来自分类Dev

在HTML中插入制表符或空格

来自分类Dev

如何递归查找目录树中的所有文件,即每个文件第一行的第一个字符是空格,制表符或换行符?

来自分类Dev

在动态更改文件中,将bash中的制表符/换行符分隔的文件有效地转置输出

来自分类Dev

用制表符替换行开头的所有空格

来自分类Dev

在不处理文件的情况下计算Java中的空格,制表符和换行

来自分类Dev

php mysql 只保留单词和标点符号,没有制表符、换行符等

来自分类Dev

替换javascript中的空格和换行符

来自分类Dev

用JavaScript中的换行符替换空格?

Related 相关文章

  1. 1

    从变量中删除所有空格,制表符,换行符等?

  2. 2

    如何从jQuery Ajax Data中剥离所有空格(如空格,制表符,换行符)?

  3. 3

    如何从字节数组中删除所有空格,换行符和制表符?

  4. 4

    删除XML字符元素中重复的换行符/制表符/空格

  5. 5

    从MySQL表中删除制表符,换行符等

  6. 6

    在Vim中复制没有换行符和制表符的区域

  7. 7

    如何让我的 C 程序忽略空格(空格、制表符、换行符)?

  8. 8

    C中制表符,空格和空格之间的区别

  9. 9

    C中制表符,空格和空格之间的区别

  10. 10

    如何用REGEX匹配制表符和换行符而不是空格?

  11. 11

    一个或多个空格,制表符或换行符的正则表达式

  12. 12

    如何用REGEX匹配制表符和换行符而不是空格?

  13. 13

    c K&R计算换行符,制表符和空格

  14. 14

    使用 tr 仅转换空格,而不是制表符或换行符

  15. 15

    计算字符串中空格、制表符和换行符数量的程序

  16. 16

    Scala转义换行符和制表符

  17. 17

    Excel保存制表符分隔的文件而没有换行符(UNIX / Mac os X)

  18. 18

    制表符和换行符的ANSI C引用有时不起作用

  19. 19

    如何从CodeIgniter中的视图替换制表符和换行符?

  20. 20

    如何从CodeIgniter中的视图替换制表符和换行符?

  21. 21

    如何从 .vcf 文件中删除错误的制表符/换行符?

  22. 22

    在HTML中插入制表符或空格

  23. 23

    如何递归查找目录树中的所有文件,即每个文件第一行的第一个字符是空格,制表符或换行符?

  24. 24

    在动态更改文件中,将bash中的制表符/换行符分隔的文件有效地转置输出

  25. 25

    用制表符替换行开头的所有空格

  26. 26

    在不处理文件的情况下计算Java中的空格,制表符和换行

  27. 27

    php mysql 只保留单词和标点符号,没有制表符、换行符等

  28. 28

    替换javascript中的空格和换行符

  29. 29

    用JavaScript中的换行符替换空格?

热门标签

归档