php和node的差异(2)-- 函数形参引用

$a = [1,3];
function change_arr($arr) {
    $arr[0] = 200;
}
change_arr($a);
var_dump($a);

php打印结果如下:
array(2) {
  [0]=>
  int(1)
  [1]=>
  int(3)
}


也就是说,php并没有改变原有的实际参数。
如果想改变,有两种方法,
第一种,改变函数定义
$a = [1,3];
function change_arr(&$arr) { // 只有这里加一个传引用符号
    $arr[0] = 200;
}
change_arr($a);
var_dump($a);


第2种:用返回值
$a = [1,3];
function change_arr($arr) {
    $arr[0] = 200;
    return $arr;
}
$a = change_arr($a);
var_dump($a);


上面这两种写法,都会导致改变。
结果如下:
array(2) {
  [0]=>
  int(200)
  [1]=>
  int(3)
}


===================================================================
===================================================================

这里开始node
var arr=[1,3];
function change_arr(arr2){
    arr2[0] = 200;
}

change_arr(arr);
arr.map((n)=>{
    console.log(n);
})


好家伙,直接修改实参。
下面是打印结果
200
3


所以node编程得小心~

前文链接:
php和node的差异(1)-- 作用域

猜你喜欢

转载自xieye.iteye.com/blog/2400433