let test = function testName(a, b, c) { console.log('实参个数:', arguments.length); // 实参个数: 2 console.log('函数形参个数:', testName.length); // 函数形参个数: 3 // 基本类型数据----------------------------------------- // 通过形参方式修改 a = 2; console.log('实参 a:', arguments[0]); // 实参 a: 1 console.log('形参 a:', a); // 形参 a: 2 // 通过实参方式修改 arguments[0] = 3; console.log('实参 a:', arguments[0]); // 实参 a: 3 console.log('形参 a:', a); // 形参 a: 2 // 基本类型数据的实参与形参变化互不影响 // 引用类型数据----------------------------------------- // 通过形参方式修改 b.a = 6; console.log('实参 b:', arguments[1].a); // 实参 b: 6 console.log('形参 b:', b.a); // 形参 b: 6 // 通过实参方式修改 arguments[1].a = 7; console.log('实参 b:', arguments[1].a); // 实参 b: 7 console.log('形参 b:', b.a); // 形参 b: 7 // 引用类型数据的实参与形参变化相互影响, // 因为使用的是引用地址关系 // 实参与形参的映射------------------------------------- c = 9; console.log('实参 c:', arguments[2]); // 实参 c: undefined console.log('形参 c:', c); // 形参 c: 9 arguments[2] = 5; console.log('实参 c:', arguments[2]); // 实参 c: 5 console.log('形参 c:', c); // 形参 c: 9 // 实参个数少于形参个数时 // 多出来的形参个数与实参个数不能形成映射 // 所以实参个数为undefined return { a, b, c }; } console.log(test(1, { a: 1 })); // {a: 2, b: {…}, c: 9}
JavaScript之函数的实际参数(实参)和形式参数(形参)、arguments(实参)、(a, b, c, d)(实参)、字面量定义具名函数
关注
打赏