Javascript 进阶 3-2 ASI 自动插入分号

http://img2.58codes.com/2024/20121770BCDBJo58eR.jpg

本篇介绍的ASI的作用机制

ASI会自动在js的最后一段补上分号;

但这样的机制有时候也并非是好事。

function callName () {    return    '叫我小明';}console.log(callName);

这样的执行结果,会出现undefined。

因为ASI自动在return的后方加上了分号,所以程式码只执行到return一个空的东西就结束。

另外还有

    if (1 > 10) a = 1    else a = 2    console.log(a)

这样的执行结果没有问题,a会等于2

但如果我们要变成同一行写法的话就会出现语法错误

    if (1 > 10) a = 1 else a = 2 console.log(a)

所以结论就是,撰写的时候还是自己加上分号比较好。

ASI 补充说明

“不会” 发生 ASI 的规则:

新的一行是 ([/ 开始 (容易出错的地方)
var a = 1var b = a(a + b).toString() (function() { })()(function() { })() var a = 1var b = a/test/.test(b)
新的一行以 +-*% 作开始 (会影响执行结果)
var a = 2var b = a+a
新的一行以 ,. 作开始 (需注意执行结果)
var a = 2var b = a.toString()console.log(typeof b) var a = 1,b = 2 // b 一样会 var 被宣告

因此,遇到以上的标点符号前方加入分号也是解决办法

ex:

// 执行错误(function() { })()(function() { })() // 正确;(function() { })();(function() { })()

以上就是本篇的分享~汪汪


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章