php - javascript作用域问题
本文介绍了php - javascript作用域问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
PHP代码:
<?php
$key = [1,2];
function add($key){
array_push($key,'dddss');
print_r($key);
}
add($key);
print_r($key);
输出
Array
(
[0] => 1
[1] => 2
[2] => dddss
)
Array
(
[0] => 1
[1] => 2
)
JS代码:
var $key = [1,2];
function addkey($key){
let hello = $key;
hello.push(9)
console.log(hello)
console.log($key)
}
addkey($key)
console.log($key)
输出:
[ 1, 2, 9 ]
[ 1, 2, 9 ]
[ 1, 2, 9 ]
我想要的是函数内的处理不影响函数外,也就是类似于PHP的结果,也想知道什么原因
解决方案
let hello = $key.slice();
你的函数参数是一个数组,而数组在js中是按照引用来传递的。。你在函数内部使用let 将一个数组的引用赋值给另一个变量的时候。实际上,hello和$key都同时指向了一个值,在这里就是length为2的数组。所以你对任何一个变量做push或者其他操作的时候,改变的其实是两个变量同时指向的那个值。
这篇关于php - javascript作用域问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文