js中那些不太引人注意,又比较常识的坑
程序员文章站
2022-03-18 16:38:50
跟javascript打交道这么多年,对于js这个弱类型的语言,可以说是又爱又恨,虽说现在很多关于前端的强大插件,比如vue,react,ng,jquery,bootstrap等。但在使用的时候,我们仍然要使用很多原生的js写法,尤其是对数据的逻处理上。 怎么 说呢,原生的js在使用的过程中,有着太 ......
跟javascript打交道这么多年,对于js这个弱类型的语言,可以说是又爱又恨,虽说现在很多关于前端的强大插件,比如vue,react,ng,jquery,bootstrap等。但在使用的时候,我们仍然要使用很多原生的js写法,尤其是对数据的逻处理上。
怎么 说呢,原生的js在使用的过程中,有着太多的坑了。用过的小朋友们体会一定很深。下面就整理一些很简单,很常见,有很容易被忽略的坑。以后再遇到的过程中还会一点点的补充。时刻提醒自己,在做的过程中,注意这些小细节。
1.数组对象传值
这个坑,估计光看名字,很多大神已经明白什么意思了。
新定义的变量名等于一个已经赋值的数组和对象的时候,他改变的只是变量的指针,并不是给新声明的变量名直接复制。
这是js的本性,天生的,然儿这个本性在项目开发中的小伙伴们,原本就很忙碌的心,很难一下就想到这一点。往往在改动数组或对象的值后,需要他们的展示效果的时候才发现:“哎!这他妈的怎么改成这样了(注:值没带成/两个值都改了)”;挠挠还在热运动中的脑袋,突然想到数组对象值传递是改变指针的。又要回去处理重新复制。
在变量为数组或对象时进行传值时,如果不确定,两个数据一定 会保持一致时,可采用另一种赋值方式,就以数组为例:
var arr1=[1,2,3,4]; var arr2=[]; for(var i=0,len=arr1.length;i<len;i++){ arr2.push(arr1[i]); } arr2[4]=5; //arr2=[1,2,3,4,5] arr1=[1,2,3,4,6] var arr3=arr1; arr3[4]=6; //arr2=[1,2,3,4,6] arr1=[1,2,3,4,6]