欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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]