js 函数实参列表arguments和形参的那点事儿

**JavaScript是解释下前端语言和其他编译性后端语言(C++、java、python、golang…)不一样,由于变量的类型没那么严格,一个var就可以定义全部,导致语法也比较松懈!函数形参和实参传递的时候,也无需一一对应,都是隐式转换了!而后端编译性语言是有严格的变量类型定义的,所以规则很严格!
**

JavaScript和其他高级语言的核心区别就是:太多的隐式类型转换,导致变量类型没那么严格,使得语法没那么严格!

//如果实参和形参数量相等,那么形参和argments之间有种映射关系,形参变量值改变对应位置的arguments[i]也随之改变,反之亦然。

复制代码
function test(a,b){
b = 3;
console.log(arguments[1]); //3

arguments[1] = 4;
console.log(b);                    //4
  • List item

}
test(1,2);
复制代码
//如果实参比形参少,那么多余的形参和argments之间就没有了映射关系,即多余形参值得改变,对应位置的arguments[i]的值仍为undefined,反之亦然。

复制代码
function test(a,b){
//b = 3;
// console.log(arguments[1]); //undefined

arguments[1] = 4;
console.log(b);                  //undefined  

}
test(1);
复制代码

猜你喜欢

转载自blog.csdn.net/weixin_43343144/article/details/83859023