猿问

三个函数调用之后分别输出什么?

下面的三个函数调用之后分别输出什么?

function f1(x, y, a) {

    arguments[2] = 10;

    console.log(a);

}

f1(1, 2, 3);


function f2(x, y, a) {

    arguments[2] = 10;

    console.log(a);

}

f2(1, 2);


function f3(x, y, a) {

    arguments[2] = 10;

    console.log(arguments[2]);

}

f3(1,2);

求分析:
输出结果:第一次:10;第二次:undefined;第三次:10

杨魅力
浏览 432回答 1
1回答

POPMUISE

arguments是伪值,它是传入函数参数的值组成的数组,它的顺序和参数列表一致,且可以在函数内被重写arguments中,每一个值都是指向参数本身的内存,而并非是副本函数内arguments,其实就是取到了[x, y, a]其中,arguments[2]对应的是a,且直接指向a的内存因此,第一个函数输出10,因为修改arguments[2]也就是修改a的内存,也就是对a赋值10第二次,由于没有传a,所以arguments[2]没有指向任何内存,且a也没有指定内存,因此是undefined第三次,由于arguments[2]没有指向任何内存,a也没有指定内存,所以,arguments[2]实质是给arguments[2]开辟了一块内存,并初始化值为10,但是这块内存并不是a的内存
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答