书接之前代码输出题目,
异步&事件循环
前端面试题之代码输出
前端面试题之代码输出二
前端面试题之代码输出三
前端面试题之代码输出四
前端面试题之代码输出五
前端面试题之代码输出六
前端面试题之代码输出七
前端面试题之代码输出八
前端面试题之代码输出九
前端面试题之代码输出十
前端面试题之代码输出十一
前端面试题之代码输出十二
前端面试题之代码输出十三
前端面试题之代码输出十四
前端面试题之代码输出十五
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 。