首页 > 试题广场 >

根据代码回答问题。 问:三行 x , y , z 的输出分别

[问答题]
根据代码回答问题。
问:三行 x y z 的输出分别是什么?


function fun(n,o){
    console.log(o)
    return{
        fun:function(m){
            return fun(m,n);
        }
    };
}
var x=fun(0);x.fun(1);
var y=fun(0).fun(1).fun(2)
var z=fun(0).fun(1);z.fun(2);z.fun(3);


答案:
undefined 0
undefined 0 1
undefined 0 1 1
解:
X的值:x=fun(0)调用fun函数,传入参数n=0,则打印o为undefined,返回值是一个对象;x.fun(1)调用了返回对象的fun方法,传入参数m=1,返回值是fun(1,0),返回之前又调用了fun函数,参数n=1,o=0,打印o为0,返回一个对象。故打印出undefined和0
Y的值:y=fun(0).fun(1)同上,至此打印出了undefined和0,返回值是对象,又.fun(2)调用返回对象的fun方法,传入参数m=3,返回fun(3,1),但返回之前又调用了fun函数,参数n=3,o=1,打印o为1,返回一个对象。故打印出undefined和0和1
Z的值:z=fun(0).fun(1);z.fun(2);同上Y,至此打印出了undefined和0和1,z.fun(3);又打印出了1。故结果undefined和0和1和1
发表于 2017-08-04 09:31:45 回复(0)
测试出来是 1. undefined;0 2. undefined,0,1 3. undefined,0;1;1 1.x.fun(1)返回的是fun(1,0)所以是0; 后面以此类推,然后注意函数遇见括号执行就推出来了
编辑于 2016-12-17 15:03:30 回复(0)