首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS魔法堂:ASI(自动分号插入机制)和前置分号

的回答,让我又一次看到大牛的风采,实在佩服万分。但单纯的敬佩是不足以回报他如此优秀的文字,必须深入理解文字的含义和背后的原理才不愧呢!   在这之前我们需要先理解ASI(自动分号插入机制)。...的,而且必须加分号,否则编译就不通过了。...ASI机制不是说在解析过程中解析器自动把分号添加到代码中,而是说解析器除了分号还会以换行为基础按一定的规则作为断句的依据,从而保证解析的正确性。    首先这些规则是基于两点: 1....因此分不分号纯属个人和团队的偏好问题,当然也可以混合使用咯(下面借一下大牛@高原的图) ?  ...对于我这种能少敲键盘则少敲,能不用鼠标就不用的大懒虫,自然而然加入到“无分号党”的怀抱咯,入党的前提条件就是记住一下规则来应付No ASI的情况: 在以 ([/+- 开头的语句前加分号(由于正常写法均不会出现以

1.8K80

Python 为什么不用分号作终止符?

单纯看“分隔符”与“终止符”,它们都是必须的,然而是否都要用分号来表示呢?这个问题没有达成一致的标准。 Python 中使用了分号作为语句分隔符,但是不用分号作为终止符, 而是用了换行作为终止符。...Python 不用分号作为终止符,大概有如下的原因: 它把缩进和换行当成文法的有效部分,可以表达出完整的语义,不会导致编译时的歧义。...这是最主要的原因,是跟“分号党”的根本区别 不用分号与花括号,但是使用缩进和冒号,这是一脉相承的思路,总体上形成了更高的可读性、简洁性和标准化。...这体现了局部语法与整体规则的关系,1 + 1 > 2 可以少写字符,也避免了在某些键盘上要敲“shift”键的麻烦 分号主要是给机器看的,但 Python 更注重于人性化。...早期硬件有所限制,加分号可以提升解析/编译的速度,但如今障碍已除,某些分号党语言只是在延续 B/C 语言的老传统 对于需要换行的语句,Python 中使用反斜杠(\)来连接,可以理解成它把换行给转义了,

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python与人工智能——16、取消print换行与分号的作用

    # 也可以设置为其他字符 print("Number 1", end=' - ') print("Number 2") # 输出为 Number 1 - Number 2 分号的作用 在 Python...中,分号(;)的作用相对有限。...作用说明: 可以在一行中放置多个语句,用分号分隔。但在 Python 中不提倡这种做法,因为 Python 通常强调代码的可读性和简洁性,每行最好只写一个语句。...在某些特定的情况下,比如在交互式环境中,可以使用分号快速测试多个小的表达式而不用逐行输入。...而分号在 Python 中的作用相对较小。它主要可用于在同一行放置多个语句,但这种做法不被提倡,因为会降低代码可读性。一般来说,Python 强调每行一个语句以提高代码的清晰性。

    18810

    JavaScript里的分号,你加还是不加?

    在JavaScript中,如果语句各自独占一行,通常可以省略语句之间的分号(程序的结尾或者右“}”之前的分号也可以省略。)...因此,在编写JavaScript程序时,一般会有两种编码习惯,加分号 和 不加分号 : 加分号: 许多程序员使用分号来明确标记语句的结束,即使在并不完全需要分号的时候也是如此; 不加分号: 另一种风格是...,在任何可以省略分号的地方,都将其省略,只有在不得不用的时候才使用分号。...2.什么情况下可以不加分号 不加分号的情况下,JavaScript在解析时会自动插入分号,在满足以下两个条件的情况下,JavaScript会自动插入分号,可以不加分号: 2.1每条语句各占一行 如果多条语句中每条语句各占一行...; 加上分号在某些情况下可以增进代码的性能,因为这样解析器就不用花多余的时间去推测在哪里添加分号了。

    2.2K11

    bash 脚本中分号的作用「建议收藏」

    在Linux bash shell中,语句中的分号一般用作代码块标识 1、单行语句一般要用到分号来区分代码块。...比如: weblogic@pmtest:/if [ “PS1” ]; then echo test is ok; fi test is ok 该脚本或命令行中,须要两个分号才为正确的语句,第一个分号是then...前的分号,用于标识条件块结束。...第二个分号在fi前,用于标识then块结束,假设缺少这两个分号,则程序运行错误。 这里有趣的是echo后的字符串不须要使用引號也能正确地被识别。 注意:语句结尾不要分号。 2、该代码若写作多行。...而不使用esle if,若使用else if,则为不完整语句,如以下的样例不能被正确运行: weblogic@pmtest:/if [ “PS1” ] > then echo test is ok >

    2.3K20

    JS该写分号嘛? - wuuconixs blog

    ASI 在写JS之前,我一直在写Python,习惯了没有分号的代码。 刚好,JS为我们提供了 自动分号插入 Automatic Semicolon Insertion!...这让我们在大部分情况下都不用写分号,非常的优雅。 然而ASI在某些情况下将产生错误。 ASI发生错误的情况 IIFE 立即调用函数表达式 考虑以下代码。...然后值得注意的是,undefined = [d, c]虽然对undefined本身没有影响,但是它本身作为一个赋值表达式也是有值的,它的值就是[d, c] 故最后运行的表达式实际上是这样的[a, b]...这种没有报错的隐式错误,真在Leetcode刷题的时候 够你Debug半天了2333。 总结 实际上,完全不用为了ASI在一些情况下导致错误而每行都加上一个分号。...对于我目前遇到的这两种情况,可以总结一下,如果一行的开始是一个(或者[,那么再上一行你需要手动加上一个分号,至于其他的情况,完全不用考虑分号~ 还可以参考一下尤大的这篇回答 https://www.zhihu.com

    1.2K20

    node.js要不要加分号

    一开始,关于在node.js句末不加分号,我是拒绝的。因为有时不加分号会报错。 我觉得node.js在语法层面挺拧巴的,要么就像PHP那样严格要求加分号,要么就像python一律不加分号。...而node.js却表现出一副欲拒还迎的姿态,让人感觉就是既要拥抱变化,又要抱残守缺。 ?...加不加分号,这是一个问题 直到有一天我了解了加不加分号的场景,才终于释然 一言以蔽之:当代码是以 ( [ ` 这些符号开头时,就需要在代码之前加上分号,其他场景都不需要加分号 let msg =...Function.Module.runMain (module.js:693:10) at startup (bootstrap_node.js:191:16) at bootstrap_node.js:612:3 正确的写法...: let msg = '加不加分号呢' ;(function () { console.log('我是一个匿名函数') }()) 同理,以 [ 或 ` 开头的代码应该这么写: ;['章北海'

    2K20

    建树忽略了一个分号折腾我好久...

    注意这里的X在序列中为N。 我把上面这些warning去掉之后,导入iTOL说不是正确的树格式。 Couldn't initialize the tree....plain text ASCII, and that the tree is in Newick, Nexus or phyloXML format 又试着在R里面用read.tree读,报错左右括号的个数不同...我先检查了数中的各种符号,发现错误原因为树文件中物种注释之间的分号(;)。 点号(.) 竖线(|)下划线(_)是允许的。 去掉分号后在R中就不报错了。 但是树直接为NULL了。...又对着文件仔细看了很久,突然意识到nwk格式的树最后有一个分号,要把这个再手动填上。...分号表示树的结束,因此树中间如果有分号只会读取到这里,就会报错左右括号数量不相同了~ 折腾这么久的原因是忘了UNITE数据库注释信息本身带有分号;且全部替换后忘了最后还要再加上一个分号。

    92310

    因为一个分号,引起的程序员大讨论

    之前在网上看到过一段有趣的代码,据说在女生节的时候,某软件学院的学生还专门给女生拉了条幅   代码   为了看的更清楚一点,我们把上面的代码整理出来,代码结构如下   整理出来的代码   站在程序员的角度...作为一个程序员,考虑到程序的严谨性,我们认真分析一下。   首先,forever变量都没有定义,程序怎么能运行下去呢   然后,在for循环后出现了一个分号是什么意思呢?...软院的男生难道不知道,如果加了分号,相当于循环是没有输出语句的么,如果forever变量定义成无限大,那么“I Love My Girl”这句话估计也是永远没机会说出口了。   ...当然啦,这仅仅是站在程序员的立场去看问题的,网上还是有一些神评论的,我们可以一起看看  吐槽的   首先我们来看看吐槽这段代码的 一个分号,让所有的爱还没开始就已经结束了 爱你在心,分号却像现实阻挡,始终无法开口...  大家觉得,这个分号是想表达真情实意,还是不小心手抖加上的呢?

    78680

    每天学点JavaScript基础(2)——JavaScript里的分号,你加还是不加?

    JavaScript里的分号,你加还是不加? 1.前言 我们接触的大部分编程语言,都会以 分号 作为代码的结束,将程序语句分隔开来,JavaScript同样如此。...在JavaScript中,如果语句各自独占一行,通常可以省略语句之间的分号(程序的结尾或者右“}”之前的分号也可以省略。)...因此,在编写JavaScript程序时,一般会有两种编码习惯,加分号 和 不加分号 : 加分号: 许多程序员使用分号来明确标记语句的结束,即使在并不完全需要分号的时候也是如此; 不加分号: 另一种风格是...,在任何可以省略分号的地方,都将其省略,只有在不得不用的时候才使用分号。...如: x ++ y 这段代码解析为: x; ++y; 而不是: x++;y; 4.使用分号的好处 加上分号可以避免很多错误(例如,不完整的输入),开发人员可以放心的通过删除多余的空格来压缩代码; 加上分号在某些情况下可以增进代码的性能

    96011

    女神节表白:因一个分号被拒

    分号不背这个锅 3月8号是中国妇女节,3月7号俗称女神节,而每年的女神节的横幅在校内都被玩出一朵花了。...,对代码进行了改进,解决了分号的问题,大家来看看: [正确解法] 意思就是:永远是女生节。...还有哪些语言需要分号 上线提到的是 C 语言需要用分号来断句,哪还有那些语言需要分号呢? 我把我常见的语言列在这里了,大家可留言补充或纠正,以后写代码千万得注意了。...需要分号的: PHP、Java、C++、C#、SQL、Pascal。...不需要分号的: Python 分号可选: JavaScript Scala 其他有创意的横幅 0 error 也不抵你的微笑 [0 error 也不抵你的微笑] 这一定是编译报错见得太多了。。

    58811

    【YashanDB知识库】yasql对字符串中分号的判定

    varchar(100));insert into test_tab values('aa;');insert into test_tab values('aa;');这个问题发生在从pg向崖山进行数据迁移的过程中...,通过pg_dump将数据导出到文件后进行执行,第一条语句执行报错,在pg上执行是不会报错的,在崖山和oracle上执行均报错。...table test_tab(col1 varchar(100));insert into test_tab values('aa');insert into test_tab values('bb');问题的风险及影响...问题影响的版本所有版本。问题发生原因oracle和崖山目前对分号的处理方法是读取一行,如果这一行的末尾是分号,就认为当前SQL结束了。...而本质问题是这个分号产生了歧义,数据库并不知道究竟是操作员写错了语句,还是语句本身就是这样。

    4000
    领券