JavaScript .concat方法注意事项

concat() 方法用于将两个数组拼接。

举例

var arr1 = ["Cecilie", "Lone"];
var myChildren = arr1.concat(["Emil", "Tobias", "Linus"]); 

容易栽到的点是,concat的方法是返回一个新的数组,而不会改变原数组。

因此使用了之后一定要用一个变量把concat的结果存起来。

比如我写的时候就下意识的犯错,下面是一段反面教材,我希望通过点击按键,展示出数组拼接的结果:

<!DOCTYPE html>
<html>
<body>

<button onclick="fun()">按键</button>
<p id="demo1"></p>
<p id="demo2"></p>

<script>
var myChildren = ["Emma", "Isabella"];
document.getElementById("demo1").innerHTML = myChildren;
function fun(){
myChildren.concat(["Jacob", "Michael", "Ethan"]); 
document.getElementById("demo2").innerHTML = myChildren;
}
</script>

</body>
</html>

显然错误的地方在于myChildren用完concat方法之后应该用一个变量把结果存起来,然后我改了一下函数:

function fun(){
var myChildren = myChildren.concat(["Jacob", "Michael", "Ethan"]); 
document.getElementById("demo2").innerHTML = myChildren;
}

这句报错的原因应该是全局变量和局部变量的命名冲突,

在函数外定义了全局变量myChildren,在函数内又var了一个myChildren,

会出现冲突导致无法运行。

正确写法应该是

function fun(){
myChildren = myChildren.concat(["Jacob", "Michael", "Ethan"]); 
document.getElementById("demo2").innerHTML = myChildren;
}

这个时候函数体内部被赋值的myChildren是什么都没有关系,设成a也可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值