首页
学习
活动
专区
工具
TVP
发布

JS该写分号? - wuuconixs blog

ASI 在写JS之前,我一直在写Python,习惯了没有分号的代码。 刚好,JS为我们提供了 自动分号插入 Automatic Semicolon Insertion!...> node 1.js /root/1.js:2 (function log() { ^ TypeError: 1 is not a function 提示显示1不是一个函数,看来引擎把代码理解成了这个样子...> node 1.js /root/1.js:2 [a, b] = [b, a] ^ ReferenceError: Cannot access 'b' before initialization...总结 实际上,完全不用为了ASI在一些情况下导致错误而每行都加上一个分号。...对于我目前遇到的这两种情况,可以总结一下,如果一行的开始是一个(或者[,那么再上一行你需要手动加上一个分号,至于其他的情况,完全不用考虑分号~ 还可以参考一下尤大的这篇回答 https://www.zhihu.com

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

JS分号可以省掉吗?

第一反应就是JS引擎将代码生成语法树的时候,可能解析不正确。于是,我在第一行末尾加分号测试。...大宗师Douglas Crockford表示要正确使用分号 引用minhan在扯不完的 JS 分号问题文中的论述: JSON、JSLint、JSMin和ADSafe 的创造者、ECMA JavaScript...如果你不想用分号,又怕出问题,v2ex上有位童鞋给出了一个速记方案: 如果你写 JS 代码不喜欢带分号,而又搞不清什么时候必须加分号,可以这么做:在以 "("、"[" 、"/"、"+"、"-" 开头的语句前面都加上一个分号...) 关于Fundebug Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java实时BUG监控。...版权声明 转载时请注明作者 Fundebug以及本文地址: https://blog.fundebug.com/2018/09/18/js-semicolon-bug/

9K60

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

你真的知道『立即执行函数』吗?

立即执行函数,经常使用,但是你确定了解它? 下面,就来看看吧! 1、定义 立即执行函数,又称IIFE....js中,加上分号才会判断它是个语句,平时我们没有加分号js会自动为我们加上分号 如:console.log('hahha') js 解析成 console.log('hahha'); 而括号太多时,...js不能正确识别,所以,就要我们自己加分号; (function (){ console.log('Function Expression'); }) () (function (){ console.log...上面的代码会 报错:Uncaught TypeError: (intermediate value)(...) is not a function at :4:1 原因:js...('Function Expression'); }) (); 为防止其它开发者未打分号,导致错误,所以可以在前面加上分号: ;(function (){ console.log('Function

58020

记某同学一次失败的排除bug。找bug这事真的就是靠积累

我正想跟这个同学说,让他把行号或是文件名都截图出来呢,这时他又发来了第二个截图, 虽然依然是没有行号或文件名,但我一眼就看到了引起bug的原因,就是后面的分号是中文的。...但报错信息中的提示已经很清楚了,就是最后的中文分号。 //////// 刚才说了,当时我不在电脑跟前,也就是说,我看到的他的微信发给我的信息,已经是过了有一会了。 我就问他情况怎么样了?...反正大意就是,他问我怎么看出来是中文分号的,我说“看的多了”。真的就是这样,各种报错信息看的多了,就知道什么bug都是怎么解决了。这怎么积累呢?就是多看,多练。...就说今天这个bug的情况,如果他不写不练,肯定不会有中文分号引起bug的这个事情,那最后反正是他明白了引起bug的中文分号的原因,那这就是排除bug的经验的积累。...你说怎么教你们,难道要我故意把js代码写错,然后让你们去查么?不能这样啊。不管多晚,不管什么时候,只要你们有不明白的地方,都可以微信问我。随时解答,我开车的时候除外。

682100

1. hello world!与函数声明

没有分号。古时候,一行完整的代码用分号来分隔。后来大家觉得分号已经没有必要了,也基本没有人会在一行写几行代码了。新的语言一部分是柔和派,分号变为可选;另一部分激进派直接去掉了分号。...Kotlin 属于前者,如果你写一个分号,IDE 爸爸会告诉你,没得必要,但不会报错。如果你故意把两行代码写成一行,中间加一个分号,这个分号就是必要的。 函数的声明通过 fun 关键字。欸?...,而不再需要写成两行了。 **println 代替了 System.out.println **。学 Java 的时候大家应该都吐槽过,写个打印好废键盘啊!...,其他地方都需要加对象才能调用一个方法(类也是对象)。 所以 Kotlin 是怎么做到不用指定对象也能调用方法呢?是有顶层声明(top-level declaration)的特性。...是不是觉得要写个 Hello world 也要懂这么多很费劲呢?其实要弄懂 Java 的 Hello world 也很费劲的,只是你已经过去那个初学的阶段了。

45720

写好jquery的良好习惯

在前端工作中,我们需要写很多的javascript代码。我本人对JS一窍不通。因此,在逐渐的学习jquery。这还是比较简单的,可以完成我日常工作中的大多数需求。 但是在学习中,要保持良好的习惯。...我的个人总结如下: 善用变量,尤其是对DOM结构中的ID以及CLASS 多写注释,自己不熟,前面写后面忘,所以要多谢注释 善用函数,对重复运用的代码写成函数,多处调用 多写分号,很多分号可以省略,但还是写上为好...但是可以搞清楚它的原理 命名清楚,英文或者拼音,但一定要清楚,不能让人云里雾里 外调JS压缩,多处共用且无需修改的JS压缩处理,可以减少流量 内部JS不压缩,里面可能会使用的程序输出,因此不要压缩,避免出错

22140

js语法(1)_css语法

js自动插入分号规则 a. 什么时候需要写分号 什么时候不能写分号 要有换行符,且下一个符号是不符合语法的,那么就尝试插入分号。...有换行符,且语法中规定此处不能有换行符,那么就自动插入分号。 源代码结束处,不能形成完整的脚本或者模块结构,那么就自动插入分号。...之间不能插入换行 凡是async关键字,后面都不能插入换行 箭头函数的箭头前,也不能插入换行 yield之后,不能插入换行 带换行符的注释也被认为是有换行符 一行开头是括号或者方括号的时候加上分号就可以了...以数组开头的语句 var a = [[]]/*这里没有被自动插入分号*/ [3, 2, 1, 0].forEach(e => console.log(e)) C....`Template`.match(/(a)/); console.log(RegExp.$1) -附录. void操作 功能: 因为undefined在js中不是保留字 所以 function

3.7K20
领券