【javascript】里面有了自动分号插入机制 ASI,那还要不要写分号

直接运行下面的代码看区别:

let b = 2
let c = 2
let d = 2
let e = 2
a = b + c
(d + e).valueOf()
// 会报错,VM2567:1 Uncaught TypeError: c is not a function
// at <anonymous>:1:9
// 因为这里不会自动插入分号,因为第二行一括号开始,会被误认为是函数
a = b + c;
(d + e).valueOf()
// 4

Brendan Eich创造JavaScript的时候,为了增加让 JS 的断句容错率,顺便加了自动分号插入的机制(Automatic Semicolon Insertion),简称 ASI,这是一个辅助性的功能。但是,除了上述例子“(”开头,在"[" 、"/"、"+"、"-" 前面侯也不会自动加分号,会引起bug,所以最稳妥是加上分号!
另外,如果不写分号,浏览器会自动添加,会消耗一些系统资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值