首页
学习
活动
专区
工具
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.7K80
您找到你想要的搜索结果了吗?
是的
没有找到

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.1K20

逗号运算符逗号表达式

如 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('我是一个匿名函数

1.9K20

不需要括号分号的XSS

几年前,我发现了一种在JavaScript中调用函数而不使用括号onerrorthrow语句的技术。...因为throw是一个语句,所以通常需要onerror使用分号来完成赋值,以便开始一个新的语句而不是形成一个表达式。...我遇到了一个过滤括号分号的网站,我认为必须能够使用这种技术来执行一个没有分号的函数。第一种方法非常简单:您可以使用花括号来形成一个块语句,您可以在其中进行onerror分配。...在块语句之后,您可以使用  throw 不带分号(或新行): {onerror=alert}throw 1337 块声明很好,但我想要一个更酷的选择。...:1,columnNumber:1,fileName:'second argument',message:'first argument'} 我在推特上发布了这些东西@terjanq@

2K20

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

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

74170

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

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

49810

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券