js中如果省略分号那么它是如何运行的

在javascript工作中,我们几乎不会去省略分号;为了不必要的麻烦以及代码的规范,那么如果我们省略;会发生呢?预知详情请听下回分解。

看代码!

片段一:

1 var a
2 =
3 8
4 console.log(a); >>8

片段二:

var a
b
=
8
console.log(a); >>undefined
console.log(b); >>8
console.log(ab); >>Uncaught ReferenceError: ab is not defined

看到了什么?

你没有猜错,你可以这样去理解,当我们按回车就是给它加了一个空格,比如上面的片段一:var a = 8,但是它发现后面的console.log(a)是一个独立的语句所以js默认在var a = 8的后面加了一个分号;最后就变成了

var a = 8;console.log(a);

当然上面那只是一种情况,片段二的情况是这样的:var a;b=8;为什么会这样呢,因为js发现如果加的是空格的话就会出现错误 var a b = 8;是运行不了的,所以js就给它加了个分号,简单的来说如果前面的能够和后面的拼接上那么它加的就是空格,如果拼接不上就加分号,这个第二种情况。当然这也只是我的理解,如果有理解错误请告知。

另外的还有几种特殊的情况

1 var a = 2;
2 var b = 3;
3 a
4 ++
5 b
6 console.log(a); >>2
7 console.log(b); >>4

如果是这种情况,它的运行结果是a;++b;

至于为什么因为本人技术有限,暂时也不清楚。

还有就是另外3个比较特殊的

return,continue,break;

如果有换行后面加的是分号

return
true;

它解析成了return;true;

时间: 2024-10-09 17:12:02

js中如果省略分号那么它是如何运行的的相关文章

js中常常容易忘记的基本概念

javascript组成部分 一个完整的javascript实现应该由三个不同的部分组成:核心(ECMAScript).文档对象模型(DOM).浏览器对象模型(BOM) Web浏览器只是ECMAScript实现可能的宿主环境之一.宿主环境不仅提供基本的ECMAScript实现,同时也会提供该语言的扩展,以便言语和环境之间对接交互. ECMAScript语言邮下列组成:语法.类型.语句.关键字.保留字.操作符.对象 文档对象模型(DOM):提供访问和操作网页内容的方法和接口 浏览器对象模型(BOM

JS中的运算符&JS中的分支结构

一.JS中的运算符 1.算术运算(单目运算符) + 加.- 减.* 乘./ 除.% 取余.++ 自增.-- 自减 >>> +:有两种作用,连接字符串/加法运算.当+两边全为数字时,进行加法运算: 当+两边有任意一边为字符串时,起连接字符串的作用,连接之后的结果为字符串 除+外,其余符号运算时,会先尝试将左右变量用Number函数转为数字 >>> /: 结果会保留小数点 >>> ++: 自增运算符,将变量在原有基础上+1: --: 自减运算符,将变量在原

JS中的循环结构、循环嵌套以及函数介绍

[循环结构的步骤]    *①声明循环变量    *②判断循环条件    *③执行循环体(while的{}中的所有代码)操作     *④更新循环变量    *     * 然后,循环执行②③④    *     *     * [JS中循环条件支持的数据类型]    * ①boolean:true 真     false   假    * ②string: 非空字符串为真       空字符串为假    * ③null/NaN/undefined:  全为假    * ④object:全为真 

js中的数组对象排序

一.普通数组排序 js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: var arr = ["a", "b", "A", "B"]; arr.sort(); console.log(arr);//["A", "B", "a", "b"

js中三目运算符和&& || 符的个人浅见

这两天看到别人写的代码,感觉很牛逼,如下,大神请忽视 $(".lgn").on("click", function() { var a = {}; a.loginType = $(this).data("logintype"); a.loginType == wx_utils.LOGIN_TYPE.WX ? (a.username = $("#username").val(), a.password = $("#pa

JS中的柯里化(currying)

何为Curry化/柯里化? curry化来源与数学家 Haskell Curry的名字 (编程语言 Haskell也是以他的名字命名). 柯里化通常也称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果.因此柯里化的过程是逐步传参,逐步缩小函数的适用范围,逐步求解的过程. 柯里化一个求和函数 按照分步求值,我们看一个简单的例子 var concat3Words = function (a

node.js中的交互式运行环境-REPL

<Node.js权威指南>第2章Node.js中的交互式运行环境--REPL 开发者可以在该环境中很方便地输入各种JavaScript表达式并观察表达式的运行结果. 在学习Node.js框架的过程中,通过该运行环境的使用,我们可以很方便地了解Node.js中定义的各种对象所拥有的各种属性及方法.本节为大家介绍在REPL运行环境中操作变量 2.2 在REPL运行环境中操作变量 在REPL运行环境中,可以使用var关键字来定义一个变量并为其赋值,但是在输入了对其赋值进行的表达式后,该表达式的执行结

JS中的函数、Bom、DOM及JS事件

本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的声明及调用] 1.函数声明的格式: function 函数名(参数1,参数2,参数3,--){//函数体 return 结果; } >>>函数的调用格式: 直接调用:函数调用的格式:函数名(参数一的值,参数二的值,--): 事件调用:事件名=函数名( ); 2.函数声明的几点强调: ①函数名

js中confirm揭示三个按钮“是”“否”“取消”

js中confirm提示三个按钮"是""否""取消" 重载DOM中confirm window.confirm = function(str) {   str=str.replace(/\'/g, "'&chr(39)&'").replace(/\r\n|\n|\r/g, "'&VBCrLf&'");   execScript("n = msgbox('"