函数形参值传递

var a = function(name) {
	name = 'a';
	return name;
};
var b = 'b';
a(b);
console.log(b); // b

var a1 = function(obj) {
	obj.name = 'a1';
};
var b1 = {
	name: 'b1',
	no: 'b1'
};
a1(b1);
console.log(b1); // Object {name: "a1", no: "b1"}

var a2 = function(obj) {
	obj = {
		name: 'obj'
	};
	return obj;
};
var b2 = {
	no: 'b2'
};
a2(b2);
console.log(b2); // {no: 'b2'}

var a3 = function(obj) {
	obj = 'a3';
	return obj
};
var b3 = {
	name: 'b3'
};
var ret = a3(b3.name);
console.log(b3); // Object {name: "b3"}
console.log(ret); // a3

理解:
函数形参相当于重新定义了一个变量,给变量赋值基本类型或者指向引用类型。当函数内部给形参赋值引用类型时,相当于形参变量指向新的引用类型内存。
参考文章:
JavaScript并非“按值传递”

此条目发表在JavaScript分类目录。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注