本文主要是介绍JavaScript 分号踩坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今天踩了一个JavaScript分号的坑
我想使用JavaScript的解构赋值语法来实现交换两个变量的值而不必引入第三个变量,代码如下所示:
let a = 100
let b = 200
[a,b] = [b,a]
console.log(a)
console.log(b)
因为习惯了不加分号,所以没加分号产生报错:“Cannot access ‘b’ before initialization”
let a = 100
let b = 200;
[a,b] = [b,a]
console.log(a)
console.log(b)
原因应该是JavaScript有一个机制叫自动分号插入(Automatic Semicolon Insertion),本次报错的原因应该就是该机制错误的理解了我的意思,转换成了let b = 200[a,b] = [b,a]
因为该赋值运算从右向左执行,所以报了b未初始化的错误。比如立即执行函数()()
就有可能因为不加分号而报错。所以以后尽量写分号,或者有歧义的语句可以将分号写在开头是一个比较好的实践,如:
let a = 100
let b = 200
;[a,b] = [b,a]
console.log(a)
console.log(b)
用处不大的纠错历程:
我先询问chatGPT我的代码错误,他说了一堆没用的然后发给我它的代码,然后我一看这不和我一样?但我还是复制粘贴然后一运行,顺利运行,逐行对比过后发现他每行后面都加上了分号,然后我回退回我的代码加了分号顺利运行,然后经过测试仅在第二行末尾加上分号,问题解决。
这篇关于JavaScript 分号踩坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!