如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

在node的命令行里面,使用await的时候,可能会涉及一个在代码开头使用分号的奇怪方案。具体见这里:https://newsn.net/say/console-node-await.html 。那么在js代码行前面使用分号,是个什么样的作用方式呢?本来探讨的就是这样的问题,在js代码行最前方使用分号的可能性。

前言

对于js代码中的分号,大家都不会陌生,一般放置于语句的尾部。表示这条语句结束了,但是事实上,如果玩过eslint的同学,就可以指定,分号也是可有可无的。但是,没有了分号之后,却引发了一场血案......

js分号所引发的离奇事件 - 000
js分号所引发的离奇事件(图7-1)

代码展示

两段非常普通的js代码,分开展示如下。

代码段1:

var test=function(a){
    alert(a)
    return function(b){
        alert(b)
    }
}

代码段2:

(function(c){
    console.log(c)
})("我们期待在console中输出这句话");

两者放在一个js里面,效果截图如下:

js分号所引发的离奇事件 - 001
js分号所引发的离奇事件(图7-2)

那么大家先看到这里,用自己聪明的大脑想想,这个demo,会不会在console里面,输出我们期待的文字呢?

js分号所引发的离奇事件 - 002
js分号所引发的离奇事件(图7-3)

意料之外的答案

意料之外的,我们所期待的文字,并没有在console中输出。我们反而得到了2个alert,console里面没有任何输出。我们纠结的文字,在alert里面输出了。这究竟是为什么呢....

js分号所引发的离奇事件 - 003
js分号所引发的离奇事件(图7-4)

js分号所引发的离奇事件 - 004
js分号所引发的离奇事件(图7-5)

js分号所引发的离奇事件 - 005
js分号所引发的离奇事件(图7-6)

修正后的代码

如果我们想得到期待中的console输出效果,针对目前的代码,我们就可以在第二段代码的前面添加一个分号。就可以得到我们想要的效果了。

js分号所引发的离奇事件 - 006
js分号所引发的离奇事件(图7-7)

结论

一个分号就阻止了两段代码的错误结合,如果说为啥会有错误的输出,请大家从匿名函数的角度,考虑这个问题,就可以了。
(function(a){})("a"),这个就是关键所在。对于是否添加分号的js代码解释,大家可以来这个在线解释器,看看到底有什么不同,http://esprima.org/demo/parse.html 。喜欢刨根问底的你,来试试吧。

事实上,node上有个包叫做esprima,可以用来解析这个js的AST树。详情请见:https://npm.js.cn/package/esprima 。拿来装逼还是挺必备的技能...

更多经验内容,尽在苏南大叔的博客,欢迎点击、转载、打赏、评论苏南大叔的博客文章,感谢您的支持!您的支持,是对我最大的鼓励。https://newsn.net/tag/js/

 【源码】代码片段及相关软件点此获取

 【js】秘籍文章入口,仅传授于有缘之人   js

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!