坑篇 - 前端 - vue 变量赋值变量,两个变量就会互相影响
背景:今天搞个百度地图,然后数组,再然后遍历给每个点加自定义窗口,问题来了为啥信息窗口出不来呢?过程:无奈之下,最后直接console 百度地图point(有横,纵坐标的点数据)和markers(用百度的函数生成的标注)的数组。谁知一console,两个数组都一样,怪不得我后面的用mark.openInfoWindow(infowindow(这个是在定义信息窗口的变量),point...
背景:
今天搞个百度地图,然后数组,再然后遍历给每个点加自定义窗口,问题来了为啥信息窗口出不来呢?
过程:
无奈之下,最后直接console 百度地图point(有横,纵坐标的点数据)和markers(用百度的函数生成的标注)的数组。
谁知一console,两个数组都一样,怪不得我后面的用mark.openInfoWindow(infowindow(这个是在定义信息窗口的变量),point),搞不出来。在这之前,我被逼无奈地直接用官网源码进行测试,直接改个id就可以展示项目样式js环境直接展示地图,谁知官网的代码竟然能展示窗口。所以我才下定决心自找自己以为没问题自己写的代码。所以就有上面console的一幕。
实在是太坑了,虽然我是新手,但是我没想到我会反犯这样的问题。我markers和point自定义在使用时是在data{var markser:[],var point:[],var arr[](别的就不展示了,直接展示和问题相关的代码)}
然后遍历的时候,不能使用这种写法进行给数组加值,这和php不像哦。for(var i=0,i<res.data.scope.length(这个是axios返回的res简单说明下就好),i++){marker[i] = “你想要付的值”;}
这种写法直接typeerror property 0 of “undefined” ,就是marks[0]原本就不存在直接undefined。超无语,如果是php的话就可以直接赋值。然后就是(刚干别的事一回儿),然后再 mounted(){} 里面直接
var markers = this.markers;
var point = this.point;
var arr = Object.keys(res.data.data.scope);
将
markers = arr ,point = arr。
所以这个问题就出现了。我以为是生成两个毫无关联的变量而且都初始化切正常赋值了。在php的里面的这样是没问题的,但是
这个两个三个变量竟然因为用变量赋值给另一个变量的方式互通了,相当于php =&$a的写法。将变量索引直接给到另一个变量,而且互相影响。这就会出现很多问题,所以我只好最后都重新用函数复制,不敢用变量赋值给变量,
markers = Object.keys(res.data.data.scope);point = Object.keys(res.data.data.scope);
然后console.log出来的两个数组互不影响,值也不一样。
以下是连个数组console的结果。
(18) [U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U]
(18) [H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H]
完结!撒花。
更多推荐
所有评论(0)