javaScript中中遇到的坑
一、Js有关对象的赋值
JS在进行开发中总会遇到一些对象的直接赋值
三种情况一种是将引用赋值给另外一个变量此时通过被赋值变量进行赋值时两个变量都会发生改变
1 var obj = { 2 a : 1 3 } 4 var obj1 = obj; 5 6 function test(b){ 7 b.a = 2 8 } 9 test(obj1); 10 console.log(obj.a);//2 11 console.log(obj1.a)//2 12 13
另一种情况
转换赋值是不影响的将一个对象先转为json字符串,然后再转换为json对象此时相当于生成了另外一个json对象
1 var data = {a:1,b:2,c:3,d:{q:4,w:5,e:6}}; 2 var data1 = data; 3 function con(data2){ 4 data2["r"] = 5; 5 console.log(JSON.stringify(data2)); 6 } 7 con(data1);//{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5} 8 console.log(JSON.stringify(data));//{"a":1,"b":2,"c":3,"d":{"q":4,"w":5,"e":6},"r":5}
还有一种情况将引用变量置为空也是互不影响的
1 var arr = {a:1, b:2} 2 var arr1 = arr; 3 arr = {}; 4 arr[a] = 2; 5 console.log(arr1) //{a:1, b:2} 6 console.log(arr) //{a:2}
二、数组的遍历删除
数组在进行遍历删除的时候,正常的循环写法如果删除就会造成索引下标出现问题,因为没有发现像java中迭代器一样的
封装方法所以目前最简单的方式就是倒着遍历数据然后再进行删除
1 var arr = [1,2,3,4] 2 3 for(var i =arr.length-1; i>=0; i--) { 4 if(arr[i] < 2) { 5 arr.splice(i, 1) 6 } 7 }
三、vue开发动态路由过程中的参数传递注意传递形式
1 this.$route.push({path:'/xxx',query:{id:1}});//类似get传参,通过URL传递参数 2 this.$route.push({name:'xxx',params:{id:1}});//类似post传参

浙公网安备 33010602011771号