码迷,mamicode.com
首页 > 编程语言 > 详细

关于JavaScript函数及其参数

时间:2016-07-21 09:47:58      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:

问题由来:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6 </head>
 7 <body>
 8     
 9 </body>
10 <script type="text/javascript">
11     var a = [1,2];
12 
13     function test1 (aa) {
14         var b = 3;
15         aa.push(b);
16         console.log(‘aa:‘ + aa);    //[1,2,3]
17     }
18 
19     test1(a);
20 
21     console.log(a);        //[1,2,3]
22 
23 /************************************/
24     var c = 1;
25 
26     function test2 (cc) {
27         var d = 3;
28         cc = cc + d;
29         console.log(‘cc:‘ + cc);    // 4
30     }
31 
32     test2(c);
33 
34     console.log(c);        // 1
35 
36 </script>
37 </html>

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

 

问题原因如下:

Js函数的传值和传址参数

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

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

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

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

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

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

 

解决方法:函数最后使用 return

 

关于JavaScript函数及其参数

标签:

原文地址:http://www.cnblogs.com/likaopu/p/5690570.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!