0
点赞
收藏
分享

微信扫一扫

前端面试题之代码输出(十六)

书接之前代码输出题目,

异步&事件循环

前端面试题之代码输出

前端面试题之代码输出二

前端面试题之代码输出三

前端面试题之代码输出四

前端面试题之代码输出五

前端面试题之代码输出六

前端面试题之代码输出七

前端面试题之代码输出八

前端面试题之代码输出九

前端面试题之代码输出十

前端面试题之代码输出十一

前端面试题之代码输出十二

前端面试题之代码输出十三

前端面试题之代码输出十四

前端面试题之代码输出十五


this
1.代码输出结果

function foo() {
    console.log(this.a);
}

function doFoo() {
    foo();
}

var obj = {
    a: 1,
    doFoo: doFoo
};

var a = 2;
obj.doFoo()

输出结果如下:

2

代码执行顺序如下:

Javascript 中,this 指向函数执行时的当前对象。在执行 foo 的时候,执行环境就是 doFoo 函数,执行环境为全局。所以,foo 中的 this 是指向 window 的,所以会打印出 2 。

2.代码输出结果

var a = 10
var obj = {
    a: 20,
    say: () => {
        console.log(this.a)
    }
}
obj.say()

var anotherObj = { a: 30 }
obj.say.apply(anotherObj)

输出结果如下:

10
10

代码执行顺序如下:

箭头函数是不绑定 this 的,它的 this 来自原其父级所处的上下文,所以首先会打印全局中的 a 的值 10 。后面虽然让 say 方法指向了另外一个对象,但是仍不能改变箭头函数的特性,它的this仍然是指向全局的,所以依旧会输出 10 。

举报

相关推荐

0 条评论