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

JS分号可以省掉

摘要: JavaScript语言从设计之初就是考虑带分号,使用不带分号编码规则就要小心点啦。...这么简单代码为什么会出错呢?第一反应就是JS引擎将代码生成语法树时候,可能解析不正确。于是,我在第一行末尾加分号测试。...在网络上搜索JavaScript关于分号BUG,发现有非常多关于要不要使用分号讨论。...大宗师Douglas Crockford表示要正确使用分号 引用minhan在扯不完 JS 分号问题文中论述: JSON、JSLint、JSMin和ADSafe 创造者、ECMA JavaScript...如果你不想用分号,又怕出问题,v2ex上有位童鞋给出了一个速记方案: 如果你写 JS 代码不喜欢带分号,而又搞不清什么时候必须加分号,可以这么做:在以 "("、"[" 、"/"、"+"、"-" 开头语句前面都加上一个分号

9K60

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

,而且必须加分号,否则编译就不通过了。...ASI机制不是说在解析过程解析器自动把分号添加到代码,而是说解析器除了分号还会以换行为基础按一定规则作为断句依据,从而保证解析正确性。    首先这些规则是基于两点: 1....那既然存在ASI机制,那为什么还有那么多团队代码规范还规定必须写分号呢?不外乎三个原因:1. 因为存在No ASI情况,懒得记忆这些特例;2....对于省略分号后代码压缩工具会出问题,jslint会对无分号代码报warning等问题,贺师俊已经在回复对其进行详细说明了。... .,*% 作为语句开头,因此只需记住前面5个即可,你看能懒则懒哦)  然后就是通过合理缩进和空白行来使代码结构更为清晰(coffeescript不就是这样?!)

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

    JS该写分号嘛? - wuuconixs blog

    ASI 在写JS之前,我一直在写Python,习惯了没有分号代码。 刚好,JS为我们提供了 自动分号插入 Automatic Semicolon Insertion!...这让我们在大部分情况下都不用写分号,非常优雅。 然而ASI在某些情况下将产生错误。 ASI发生错误情况 IIFE 立即调用函数表达式 考虑以下代码。...> node 1.js a: 4 b: 3 c: 3 d: 4 js把中间两个swap看成了 [a, b] = [b, a][c, d] = [d, c] 仍然是一个连等,我们需要从右往左看,首先是...这种没有报错隐式错误,真在Leetcode刷题时候 够你Debug半天了2333。 总结 实际上,完全不用为了ASI在一些情况下导致错误而每行都加上一个分号。...对于我目前遇到这两种情况,可以总结一下,如果一行开始是一个(或者[,那么再上一行你需要手动加上一个分号,至于其他情况,完全不用考虑分号~ 还可以参考一下尤大这篇回答 https://www.zhihu.com

    1.2K20

    node.js要不要加分号

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

    2K20

    linux分号&&和&,|和||说明与用法

    在用linux命令时候,我们可以一行执行多条命令或者有条件执行下一条命令,下面我们讲解一下linux命令分号&&和&,|和||用法 “;”分号用法 方式:command1 ; command2 用...“| ”管道符用法 上一条命令输出,作为下一条命令参数 方式:command1 | command2 Linux所提供管道符“|”将两个命令隔开,管道符左边命令输出就会作为管道符右边命令输入。...管道将rpm -qa命令输出(包括系统中所有安装RPM包)作为grep命令输入,从而列出带有licq字符RPM包来。...命令,grep命令找出含有“/bin /bash”所有行;第二个管道将grep输出送给wc命令,wc命令统计出输入行数。...“&&”符号用法 shell 在执行某个命令时候,会返回一个返回值,该返回值保存在 shell 变量 ? 。当 ? == 0 时,表示执行成功;当 有时候,下一条命令依赖前一条命令是否执行成功。

    5.5K21

    JSObjectkeys是无序

    来自 「蔡昕萌」 同学内部分享。 在最开始学习 JavaScript 时,我一直被灌输 Object Key 是无序,不可靠,而与之相对是 Map 实例会维护键值对插入顺序。...「But,Object 键值对真的是无序?」实际上在 ES2015 以后,Object.keys 规则变了: 在一些现代浏览器,keys 输出顺序是可以预测!...总结来说,就是当前 key 如果是自然数就按照自然数大小进行升序排序。...1000"] console.log(Object.getOwnPropertyNames(objWithIndices)); // ["1", "23", "1000"] 包括在 for-in 循环遍历...String 加入时间排序,然后按照 Symbol 时间顺序进行排序,也就是说他们会先按照上述分类进行拆分,先按照自然数、非自然数、Symbol 顺序进行排序,然后根据上述三种类型下内部顺序进行排序

    3.8K20

    虚函数后面的分号可有可无_虚函数需要实现

    (默认情况下,this类型是指向类类型非常量版本常量指针。...例如在Sales_data成员函数,this类型是Sales_data *const,即类一旦实例化一个对象后,this指向这个对象,是不能改变,但是对象本身可以变) =0表示这个成员函数是纯虚函数...,也就是它可以没有定义,只有接口,由它继承类具体定义它行为,当然,你也可以给它定义缺省函数体 一个类里如果包含 =0 纯虚函数,那么这个类就是一个抽象类,它不能具体实例化(不能创建它对象),...而只能由它去派生子类 合起来在虚函数后面–>纯虚函数 const 写在函数后头还=0这里不是const=0,虚函数表示方法是 virtual 返回值 函数名(参数表){函数体} , 在继承时候可以在子类从新定义这个函数...如果你子类中都重新定义了这个函数,那个父类函数定义就没有什么用了所以可以不定义只说明就行,也就是定义为纯虚函数形如: virtual 返回值 函数名(参数表)=0;这里就不用定义实际函数了。

    32220

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

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

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

    你知道 JS 模块导入有一个缺点

    作者:Dmitri Pavlutin 译者:前端小智 来源:Dmitri Pavlutin 1.命名导入和自动完成 假设我信编写了一个简单JavaScript模块: // stringUtils.js...看起来没啥问题,挺好。 现在在 app.js 文件中导入函数 exequalsIgnoreCase / app.js import { equalsIgnoreCase } from '....在此步骤,IDE无法提供有关要导入可用名称任何建议。 然后,继续写入 from './stringUtils',然后移回大括号并展开自动完成以选择要导入名称。...2.Python 模块 现在让我们尝试在 Python 中导入命名组件。它有同样问题?...3.解决方法 我能找到在JavaScript对命名导入启用自动完成唯一解决方案是调用IDE以获得帮助。

    1.8K10

    jssettimeout()用法详解_jssetattribute

    大家好,又见面了,我是你们朋友全栈君。 setTimeout与setTimeInterval均为window函数,使用顶层window一般都会省去,这两个函数经常稍不留神就使用错了。...setTimeout内函数先不执行,隔一段时间后再执行,函数后面的数字是隔时间,单位是毫秒(千分之一秒) 比如: setTimeout(‘alert(“hello world!”)’..., 400); setInterval() 方法可按照指定周期(以毫秒计)来调用函数或计算表达式,直到clearInterval()被调用或窗口被关闭。 比如: Stop interval setInterval动作作用是在播放动画时...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    15K20

    jsfind用法_jsfind函数

    今天我们要说是结合ES6新特性谈一下js里面的一个很好用方法-find() 现在前端和过去不一样,过去前端只要会画页面就行了,但是现在仅仅会画页面已经远远不够了,现在前端还需要会处理数据,而且还要会将数据分析分类处理...下面我们讲怎么用前端处理这块逻辑 首先我们拿到了所有的数据这里我直接放到一个测试用js里面存放, 要实现之前说效果,就需要使用我们今天主角find()方法。 find()是用来做什么呢?...find()方法返回数组符合测试函数条件第一个元素。否则返回undefined 在本文章需要注意几个点: ①、第一个元素 ②、测试函数 那么如何使用呢?.../find_testcodes.js" type="text/javascript" charset="utf-8">

    11.7K30

    jsHook

    简单理解:   hook(钩子)就是: 把将要执行函数或者一系列动作注册到一个统一接口下面, 当应用程序调用此接口(即hook)时,就等于调用了这一系列动作。...JS钩子(hook)例子 JS钩子(hook)例子1: 例如我们在向后台进行ajax请求时候,后台经常会返回我们一些常见错误码,如:001代表用户不存在,002代表用户密码输入错误。...这个时候我们要将错误友好提示给用户。这个时候我们该怎样实现呢?...一般写法可能是: $.ajax(option,function(result){ var errCode = result.errCode ;//错误码 if(errCode){...switch case来实现,但是这个两种写法都无法避免一个问题就是如果我错误码特别多,那得写多少个if else和case 啊?

    6.5K31

    JS逆向 | 练手?头秃那种。

    先打上断点,重新登录一下,成功进入断点说明位置十有八九是找到了,F11进去看看里面的加密逻辑是什么样。 ? 看上去逻辑还蛮简单,就是先这样再那样然后拼接在一起返回回来,完事儿~ ?...u,d,a,e,s这几个加密都可以通过上图方法追踪到对应加密。 这里我们主要研究f与m加密逻辑。 先看看f加密逻辑: 1var f = d.length ?...这里e是初始化加密算法,我们再跟进去看看: ? ? 看到这里我已经不怎么想扣代码了,这么多乱七八糟什么东西,要是真抠出来估计头发要掉一半。 ?...而且这个代码看着也不像自写算法,估计也是套通用那几种算法,所以我开始翻之前扣过代码,果然让我找到了: ?...上面的代码是不是长得有点像,为了验证这个想法我把js里关于加密代码扣下来look look ? 不得不说好编辑器可以让你事半功倍,看到图中划线地方这个参数加密方法就一目了然了。

    89720

    JS逆向 | 练手?头秃那种。

    先打上断点,重新登录一下,成功进入断点说明位置十有八九是找到了,F11进去看看里面的加密逻辑是什么样。 ? 看上去逻辑还蛮简单,就是先这样再那样然后拼接在一起返回回来,完事儿~ ?...u,d,a,e,s这几个加密都可以通过上图方法追踪到对应加密。 这里我们主要研究f与m加密逻辑。 先看看f加密逻辑: 1var f = d.length ?...这里e是初始化加密算法,我们再跟进去看看: ? ? 看到这里我已经不怎么想扣代码了,这么多乱七八糟什么东西,要是真抠出来估计头发要掉一半。 ?...而且这个代码看着也不像自写算法,估计也是套通用那几种算法,所以我开始翻之前扣过代码,果然让我找到了: ?...上面的代码是不是长得有点像,为了验证这个想法我把js里关于加密代码扣下来look look ? 不得不说好编辑器可以让你事半功倍,看到图中划线地方这个参数加密方法就一目了然了。

    70930
    领券