javascript函数中的传递参数

ECMAScript 中全部函数的参数都是按值传递的,言下之意就是说,参数不会按引用传
递,虽然变量有基本类型和引用类型之分。ide

 

  
  
           
  
  
  1. function box(num) { //按值传递,传递的参数是基本类型  
  2.     num += 10; //这里的num 是局部变量,全局无效  
  3.     return num;  
  4. }  
  5. var num = 50;  
  6. var result = box(num);  
  7. alert(result); //60  
  8. alert(num); //50 

PS:以上的代码中,传递的参数是一个基本类型的值。而函数里的num 是一个局部变
量,和外面的num 没有任何联系。
下面给出一个参数做为引用类型的例子。函数

 

  
  
           
  
  
  1. function box(obj) { //按值传递,传递的参数是引用类型  
  2.      obj.name = 'Lee';  
  3. }  
  4. var p = new Object();  
  5. box(p);  
  6. alert(p.name); 
PS:若是存在按引用传递的话,那么函数里的那个变量将会是全局变量,在外部也可
以访问。好比PHP 中,必须在参数前面加上&符号表示按引用传递。而ECMAScript 没有这
些,只能是局部变量。能够在PHP 中了解一下。
PS:因此按引用传递和传递引用类型是两个不一样的概念。

 

  
  
           
  
  
  1. function box(obj) {  
  2.     obj.name = 'Lee';  
  3.     var obj = new Object(); //函数内部又建立了一个对象  
  4.     obj.name = 'Mr.'//并无替换掉原来的obj  

最后得出结论,ECMAScript 函数的参数都将是局部变量,也就是说,没有按引用传递。spa

相关文章
相关标签/搜索