前端笔试遇到的

以下两个代码输出结果是什么?这两个不太懂,希望有大佬帮助解决!
题目一:
var a = 1;
    var func = function(a) {
        a = 2;
        func2(a);
    }
    var func2 = function(a) {
        a = 3;
    }
    func(a);
    console.log(a); 
     var obj = { val : 1 };
    var func3 = function(obj) {
        obj.val = 2;
        func4(obj.val);
    }
    var func4 = function(val) {
        val = 3;
    }
    func3(obj);
     console.log(obj);  
题目二:
    let a =5;
    class A{
        a=10;
        fn(){
            console.log(this.a);
        }
    }  
    const b = new A().fn;    
    b();                //报错


全部评论
一、 console.log(a); 输出1 因为a是原始类型,传函数时copy值 console.log(obj); 输出{val: 2} obj是对线,传进去的是指针(指向obj的地址),所以函数内操作会影响obj的值 二、 改一下就可以看出来了 (一) ``` let a =5; class A{     a=10;     fn(){         console.log(this);     } }   const b = new A().fn; b(); ``` (二) ``` let a =5; class A{     a=10;     fn(){         console.log(this);     } }   const c = new A(); c.fn(); ```
点赞 回复
分享
发布于 2020-09-25 06:02

相关推荐

点赞 4 评论
分享
牛客网
牛客企业服务