JavaScript 传递参数

ECMAScript 中所有函数的参数都是按值传递的,言下之意就是说,参数不会按引用传

递,虽然变量有基本类型和引用类型之分。

function box(num) { //按值传递,传递的参数是基本类型

num += 10; //这里的num 是局部变量,全局无效

return num;

}

var num = 50;

var result = box(num);

alert(result); //60

alert(num); //50

PS:以上的代码中,传递的参数是一个基本类型的值。而函数里的num 是一个局部变

量,和外面的num 没有任何联系。

下面给出一个参数作为引用类型的例子。

function box(obj) { //按值传递,传递的参数是引用类型

obj.name = 'Lee';

}

var p = new Object();

box(p);

alert(p.name);

PS:如果存在按引用传递的话,那么函数里的那个变量将会是全局变量,在外部也可

以访问。比如PHP 中,必须在参数前面加上&符号表示按引用传递。而ECMAScript 没有这

些,只能是局部变量。可以在PHP 中了解一下。

PS:所以按引用传递和传递引用类型是两个不同的概念。

function box(obj) {

obj.name = 'Lee';

var obj = new Object(); //函数内部又创建了一个对象

obj.name = 'Mr.'; //并没有替换掉原来的obj

}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容