程序员总结JavaScript最易出错的几个地方,你踩坑了吗

程序员总结JavaScript最容易出错的几个地方,你中枪了吗?

这里整理了学习和使用JavaScript以来,觉得比较容易出错的几个方面,将用具体的示例来详细的讲解这几个坑!

JavaScript坑一:类型的比较

程序员总结JavaScript最易出错的几个地方,你踩坑了吗

JavaScript中对于2不同的数组之间的比较,console是false。那么对于两个相同的数组之间的比较结果呢?程序员总结JavaScript最易出错的几个地方,你踩坑了吗

web前端JavaScript学习QQ群:733581373(招募中)

结果也是false,因为两个单独的数组永不相等。


程序员总结JavaScript最易出错的几个地方,你踩坑了吗

上方的console是true,因为JavaScript中因为typeof获取数组、NULL、对象类型都是object。

JavaScript坑二:函数参数

程序员总结JavaScript最易出错的几个地方,你踩坑了吗

利用函数中的arguments类shu'zu对象获取传入函数的参数数组,输出数组[1, 2]。程序员总结JavaScript最易出错的几个地方,你踩坑了吗

同样利用arguments获取参数,但因test7(1, 2)未执行return中的函数,所以无输出,若执行test7(1, 2)(3, 4)则会输出[3, 4]。

程序员总结JavaScript最易出错的几个地方,你踩坑了吗

利用Array.prototype.push.call()方法向args数组中插入了3和4,并利用ES6延展操作符(...)将数组展开并传入test9,所以console为[1, 2, 3, 4]。

JavaScript坑三:变量的作用域

程序员总结JavaScript最易出错的几个地方,你踩坑了吗

函数作用域声明且赋值了a,所以在console之上,遵循就近原则输出a等于2。

程序员总结JavaScript最易出错的几个地方,你踩坑了吗

函数作用域中虽然声明并赋值了a,但位于console之下,a变量被提升,输出时已声明但尚未被赋值,所以输出“undefined”。程序员总结JavaScript最易出错的几个地方,你踩坑了吗

函数作用域中a被重新赋值,未被重新声明,且位于console之下,所以输出全局作用域中的a。程序员总结JavaScript最易出错的几个地方,你踩坑了吗

JavaScript函数作用域中使用了ES6的let重新声明了变量b,而let不同于var其不存在变量提升的功能,所以输出报错“b is not defined”

程序员总结JavaScript最易出错的几个地方,你踩坑了吗

JavaScript上方的函数作用域中用let声明了a为1,并在块级作用域中声明了a为2,因为console并不在函数内的块级作用域中,所以输出1。

最后,如果有想一起学习JavaScript的可以来一下我的前端群733581373,基本上头条里的好友都会在里面交流,分享一些学习的方法和需要注意的小细节,每天也会准时的讲一些JavaScript的炫酷特效,游戏,插件封装,设计模式等等!

如果想看到更加系统的文章和学习方法经验可以关注的微信号:‘web前端技术圈’或者‘webxh6’关注后回复‘2018’可以领取一套完整的学习视频

猜你喜欢

转载自blog.csdn.net/zwjweb/article/details/82789609