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

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

一、前言                                   今晚在知乎看到前端技术专家——贺师俊对《JavaScript 语句后应该加分号么?》...代码块的最后一个语句会自动插入分号 function(){ a = 1 } // 等价于 function(){ a = 1; }    No ASI的规则  1....// 三个空语句 ;;; // 只有if条件语句语句块为空语句。...var a = 1 while(++a < 100); 三、前置分号                             重申一下分号的作用——作为语句的断言(EOS),目的是让解析器正确解析程序。...对于我这种能少敲键盘则少敲,能不用鼠标就不用的大懒虫,自然而然加入到“无分号党”的怀抱咯,入党的前提条件就是记住一下规则来应付No ASI的情况: 在以 ([/+- 开头的语句前加分号(由于正常写法均不会出现以

1.8K80

JS分号可以省掉吗?

程序运行起来后,没有执行结果,而且没有报错。通过console.log打印数据发现,整个程序执行到map前面就再也不往下走了,很奇怪。因为没有报错信息,无法推测具体原因。...第一反应就是JS引擎将代码生成语法树的时候,可能解析不正确。于是,我在第一行末尾加分号测试。...大宗师Douglas Crockford表示要正确使用分号 引用minhan在扯不完的 JS 分号问题文中的论述: JSON、JSLint、JSMin和ADSafe 的创造者、ECMA JavaScript...赶紧修复吧,学学怎么正确地使用分号。『!』号并不语句的分隔号,『;』才是。 JSMin处理如下代码后无法正确执行: clearMenus() !...如果你不想用分号,又怕出问题,v2ex上有位童鞋给出了一个速记方案: 如果你写 JS 代码不喜欢带分号,而又搞不清什么时候必须加分号,可以这么做:在以 "("、"[" 、"/"、"+"、"-" 开头的语句前面都加上一个分号

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

    2K20

    WPS JS宏——For语句

    version 4.4.131.D001.64.190906 (YHKYLIN-OS@Kylin) WPS版本:WPS Office 2019 WPS表格(11.8.2.10533) 一个简单的for循环语句...就这个简单的for循环语句,差点把我整放弃了! 这个语句上面只循环了20次,那是因为我尝试把数字改到50的时候,WPS竟然卡死了! 循环20次的情况下,我尝试多运行了几次,竟然也卡死了!...后来把这个语句单独放到一个新文件里又正常了,然后回到原来的那个文件,删除了一些Sheet和单元格内容后,也正常了,再怎么测试也没复现bug!!...和VBA一样,for语句也有一种for...in的用法: function testForIn() { var arr = new Array(3) for (let i = 0; i < 10;...arr10" for (x in arr) { Debug.Print(arr[x]) } } 但这里的x in arr和VBA是不一样的,在VBA里,这里的x是arr数组中当前遍历值的一个拷贝,而JS

    3.2K30

    js 调用栈机制与ES6调用优化介绍

    本文中提到的链接,因为微信的限制,没有显示出来,查看文中链接,需要点击最下方的阅读原文链接 调用栈的英文名叫做Call Stack,大家或多或少是有听过的,但是对于js调用栈的工作方式以及如何在工作中利用这一特性...,大部分人可能没有进行过更深入的研究,这块内容可以说对我们前端来说就是所谓的基础知识,咋一看好像用处并没有很大,但掌握好这个知识点,就可以让我们在以后可以走的更远,走的更快!...针对这种情况除了我们要尽量避免函数层级嵌套的比较深之外,ES6提供了“调用优化”来解决调用侦过多,引起的内存消耗过大的问题。 何谓调用: 调用指的是:函数的最后一步是调用另一个函数。...function f(x){ return g(x); // 最后一步调用另一个函数并且使用return } function f(x){ g(x); // 没有return 不算调用 因为不知道后面还有没有操作...博客、前端积累文档、公众号、GitHub 以上2019/5/20 参考资料: JS垃圾回收机制与常见内存泄露的解决方法 ES6入门-阮一峰 JavaScript 如何工作:对引擎、运行时、调用堆栈的概述

    69320

    JS 调用栈机制与 ES6 调用优化介绍

    调用栈的英文名叫做Call Stack,大家或多或少是有听过的,但是对于js调用栈的工作方式以及如何在工作中利用这一特性,大部分人可能没有进行过更深入的研究,这块内容可以说对我们前端来说就是所谓的基础知识...,咋一看好像用处并没有很大,但掌握好这个知识点,就可以让我们在以后可以走的更远,走的更快!...调用栈中的执行步骤用数字表示 printSquare(5); // 1 添加 function printSquare(x) { var s = multiply(x, x); // 2 添加 => 3 运行完成,内部没有再调用其他函数...针对这种情况除了我们要尽量避免函数层级嵌套的比较深之外,ES6提供了“调用优化”来解决调用侦过多,引起的内存消耗过大的问题。 何谓调用: 调用指的是:函数的最后一步是调用另一个函数。...function f(x){ return g(x); // 最后一步调用另一个函数并且使用return } function f(x){ g(x); // 没有return 不算调用 因为不知道后面还有没有操作

    88920

    Java的输入输出语句_c语言有没有输入输出语句

    在编写输入、输出操作代码时,需要用import语句将java.io包导入到应用程序所在的类中,才可以使用java.io中的类和接口。...二、输入语句 1.使用Scanner类: (1)使用java.util包。 import java.util.*; (2)构造Scanner类对象,它附属于标准输入流System.in。...s.nextInt(); System.out.println("姓名:" + name + " 年龄:" + age ); s.close(); //若没有关闭...三、输出语句 Java中的输出语句有以下四种: System.out.println(1111);//换行打印 System.out.print(1111);//不换行打印 System.out.write...(2222);//字节输出 System.out.printf("%+8.3f\n", 3.14);//按格式输出 System.out.println(); 是最常用的输出语句,它会把括号里的内容转换成字符串输出到输出窗口

    1.4K20
    领券