面试题记录1

面试题1:

function f(s){      
    console.log(this.a,s);  //因为是apply,则为obj.f调用函数,那么this指的是obj,  则输出a为2;s接收的是arguments里面的参数3,则s为3;
    return this.a + s;    
}
var obj = {
    a:2
}
var f2 = function(){   //无形参接收   arguments:['0':3]
    //return f.call(obj,...arguments);   //call作用也是使对象调用函数,但是传过去的是整个arguments,不是单单的数字3,所以用扩展符(相当于数组展开)
return f.apply(obj,arguments); //两个return效果一样,apply作用就是使obj对象调用函数 }
var b = f2(3); //因为函数f2()没有形参接收,所以3存放到arguments中 console.log(b); //5

面试题2:

var n=123;
function f1(){
   console.log(n);     //123
}

function f2(){
    var n=456;
    f1();     //作用域是window
}
f2();
console.log(n)     //123

面试题3:

var length = 100;
function f1(){
   console.log(this.length);   //作用域是window
}
var obj = {
   x:10;
   f2:function(f1){
        f1();        输出100
        arguments[0]();   arguments是数组,传过来的两个参数,那么arguments[0]就是f1 ,那么此时调用f1(),此时作用域是arguments,求数组长度,输出2
   }
}

obj.f2(f1,1)   //两个实参     输出100  2

 

posted @ 2020-07-27 19:01  ss-dz  阅读(131)  评论(0编辑  收藏  举报