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

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

但单纯的敬佩是不足以回报他如此优秀的文字,必须深入理解文字的含义背后的原理才不愧呢!   在这之前我们需要先理解ASI(自动分号插入机制)。.../22/automatic-semicolon-insertion-in-javascript.html    从事C#Java的猴子们都知道分号是用作断句(EOS,end of statement)...// 由于逗号位于[]内,且不被解析为数组字面量,而被解析为运算符,而逗号运算符会先执行左侧表达式,然后执行右侧表达式并且以右侧表达式的计算结果作为返回值 var a = ['a1', 'a2'] var...新行以 + 、-、 % *开始 var a = 2 var b = a +a // 会解析如下格式 var a = 2 var b = a + a    5.  ... .,*% 作为语句开头,因此只需记住前面5个即可,你看能懒则懒哦)  然后就是通过合理的缩进空白行来使代码结构更为清晰(coffeescript不就是这样的吗?!)

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

    JS分号可以省掉吗?

    背景 最近在项目中开始使用新的编码规范,一开始ESLint报一大堆错误,改得我想砸键盘,花了好些时间才适应,下面列出一些代表性的规则: 只能使用单引号 函数定义的圆括号左大括号之间一定要有空格: function...第一反应就是JS引擎将代码生成语法树的时候,可能解析不正确。于是,我在第一行末尾加分号测试。...大宗师Douglas Crockford表示要正确使用分号 引用minhan在扯不完的 JS 分号问题文中的论述: JSON、JSLint、JSMinADSafe 的创造者、ECMA JavaScript...如果你不想用分号,又怕出问题,v2ex上有位童鞋给出了一个速记方案: 如果你写 JS 代码不喜欢带分号,而又搞不清什么时候必须加分号,可以这么做:在以 "("、"[" 、"/"、"+"、"-" 开头的语句前面都加上一个分号...) 关于Fundebug Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.jsJava实时BUG监控。

    9K60

    JS该写分号嘛? - wuuconixs blog

    ASI 在写JS之前,我一直在写Python,习惯了没有分号的代码。 刚好,JS为我们提供了 自动分号插入 Automatic Semicolon Insertion!...的时候 let a = 1, b = 2 [a, b] = [b, a] console.log(`a: ${a}`) console.log(`b: ${b}`) 很容易看出这段代码的意思是交换变量ab...IIFE一样,引擎把代码理解成了 let a = 1, b = 2[a, b] = [b, a] 逗号后面是一个连等,需要从右边往左看,即先看2[a, b] = [b, a] 而这个赋值语句中已经用到了...然后它后面的[3, 4]实际上是一个下标选择,里面的3, 4会被看成一个逗号表达式,它的值是最后一个元素,即4。...总结 实际上,完全不用为了ASI在一些情况下导致错误而每行都加上一个分号

    1.2K20

    逗号运算符逗号表达式

    如 3+5,6+8 上式称为逗号表达式。逗号表达式的一般形式为 表达式1,表达式2 逗号表达式的求解过程是:先求解表达式1,再求解表达式2。...整个逗号表达式的值是表达式2的值 例如,上面的逗号表达式“3+5,6+8”的值为14 又如,逗号表达式a=3 * 5,a*4,对此表达式的求解,赋值运算符的优先级别高于逗号运算符,因此应先求解a=3 *...5,经计算赋值后得到a的值为15,然后求解a * 4,得60,整个逗号表达式的值为60(a仍为15)。...再如,一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=35,a4),a+5先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为...*3) x=a=3,6*a 第一个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18 第二个是逗号表达式,它包括一个赋值表达式一个算数表达式,x的值为3 其实,逗号表达式无非是把若干个表达式

    1.2K20

    node.js要不要加分号

    一开始,关于在node.js句末不加分号,我是拒绝的。因为有时不加分号会报错。 我觉得node.js在语法层面挺拧巴的,要么就像PHP那样严格要求加分号,要么就像python一律不加分号。...加不加分号,这是一个问题 直到有一天我了解了加不加分号的场景,才终于释然 一言以蔽之:当代码是以 ( [ ` 这些符号开头时,就需要在代码之前加上分号,其他场景都不需要加分号 let msg =....js:3 (function () { ^ TypeError: "加不加分号呢" is not a function at Object...._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js...:191:16) at bootstrap_node.js:612:3 正确的写法: let msg = '加不加分号呢' ;(function () { console.log('我是一个匿名函数

    2K20

    写给前端专家的一封公开信:关于分号(翻译)

    很喜欢你的代码风格: 你把逗号放在行首,与上一行 var 中的 r 对齐,或者与上一行的 [ { 对齐。...但是我不是很敢学的你风格,因为很多 JS 教材都说 JS 解释器的自动加分号机制会对代码有影响。 如果我不把逗号放在行尾,而是放在下一行行首,在浏览器里是否安全呢?...Inimino 的文章《JS 分号必知必会》对此解释得很清楚,他本人对是否添加分号持保留意见,但我打算更主观一些。...比如 foo(); [1,2,3].forEach(bar); 可以写成 foo() ;[1,2,3].forEach(bar) 这样写的好处是行首分号更容易引起注意,而且你会习惯于在以 ( [ 开头的语句前面加上分号...目前而言,我认为「尽量少些分号逗号放在行首」(minimal-semicolon/comma-first)的风格略微优雅一些。不仅因为它更适合人类扫读,而且它还鼓励程序员深入了解他们所用的语言。

    77870

    写给前端专家的一封公开信:关于分号(翻译)

    很喜欢你的代码风格: 你把逗号放在行首,与上一行 var 中的 r 对齐,或者与上一行的 [ { 对齐。...但是我不是很敢学的你风格,因为很多 JS 教材都说 JS 解释器的自动加分号机制会对代码有影响。 如果我不把逗号放在行尾,而是放在下一行行首,在浏览器里是否安全呢?...Inimino 的文章《JS 分号必知必会》对此解释得很清楚,他本人对是否添加分号持保留意见,但我打算更主观一些。...比如 foo(); [1,2,3].forEach(bar); 可以写成 foo() ;[1,2,3].forEach(bar) 这样写的好处是行首分号更容易引起注意,而且你会习惯于在以 ( [ 开头的语句前面加上分号...目前而言,我认为「尽量少些分号逗号放在行首」(minimal-semicolon/comma-first)的风格略微优雅一些。不仅因为它更适合人类扫读,而且它还鼓励程序员深入了解他们所用的语言。

    51310
    领券