函数参数传值修改

Posted by CodingWithAlice on June 18, 2019

函数参数传值修改

一、拼多多编程题

image-20210810143107273

考点:

参数在传递给函数时,会将参数拷贝一份传递给函数(按值/址传递

arrTemp = []; // 『重新赋值一个全新的数组给参数变量,只会改变函数内部的这个变量的引用,而不会影响到外部的原始数组』
objTemp.a = 1; // objTemp 先改变了和 obj 共同指向的对象 -> {a:1}
objTemp = { b: 2 }; // objTemp指向了另一个地址的对象

浏览器输出结果:

image-20210810145410092

二、补充案例

请删除注释再做一遍,注意很多变量名称相似:

var num1 = 55;
var num2 = 66;
function f1(num, num1) {
    num = 100;
    num1 = 100;
    num2 = 100; 			// 这是一个隐式全局变量 - 改变的是全局中的 num2
    console.log(num); 		// 100
    console.log(num1); 		// 100
    console.log(num2); 		// 100
}
f1(num1, num2);
console.log(num); 			// 『报错』
console.log(num1); 			// 55
console.log(num2); 			// 『100』