猿问

一道JavaScript面试题

var a = function (val, index) {


console.log(index);

return {

    fn: function (name) {

        return a(name, val);

    }

}

}


var b = a(0); // underfined

b.fn(1); // 0

b.fn(2); // 0

b.fn(3); // 0


慕森卡
浏览 429回答 3
3回答

HUX布斯

闭包问题执行了var b = a(0);,index没有传进去,所以是underfined,同时会将val赋值为0,这个val不会被回收,因为返回的对象中引用了这个参数b = {    fn: function (name) {        return a(name, val);    }}执行b.fn(1);就是执行a(1,0),这里index赋值为0,所以会打印0,下面同理

慕田峪9158850

第一个underfined,因为index只声明但是未赋值。后面b继承了a的fn方法。此时、index的值被fn函数赋值为val.也就是0。所以后面三个都是打印0.

慕的地10843

var b = a(0)为underfined是因为只给val赋值了,并没有给index赋值,所以console.log(index)未定义,剩下的三个是因为name为1、2、3,但是index却赋值为0,所以与name为多少无关,都会打印出0
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答