您的位置:首页 > Web前端 > JavaScript

关于JavaScript函数及其参数

2016-07-21 09:41 246 查看
问题由来:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>

</body>
<script type="text/javascript">
var a = [1,2];

function test1 (aa) {
var b = 3;
aa.push(b);
console.log('aa:' + aa);    //[1,2,3]
}

test1(a);

console.log(a);        //[1,2,3]

/************************************/
var c = 1;

function test2 (cc) {
var d = 3;
cc = cc + d;
console.log('cc:' + cc);    // 4
}

test2(c);

console.log(c);        // 1

</script>
</html>


可以看到当传入参数为数组的时候,调用函数,参数值改变;但当传入数字时,参数值不变。

问题原因如下:

Js函数的传值和传址参数

传值:只是将变量的值传入函数,函数会另外配置内存保存参数值,所以并不会改变原变量的值。

传址:将变量实际保存的内存位置传入函数,所以如果在函数中变更参数的值,也会同时变动原参数的值。

数字、字符串和布尔----传值

对象、数组和函数----传址

字符串对象-------传址

原文地址:http://www.cnblogs.com/Mblog/archive/2009/12/24/1631215.html

解决方法:函数最后使用 return
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: