为了账号安全,请及时绑定邮箱和手机立即绑定

调用foo函数,返回obj.c。那么为什么会没有结果类?

调用foo函数,返回obj.c。那么为什么会没有结果类?

料青山看我应如是 2019-02-15 10:15:38
'use strict';var a = 20;function foo () {    var a = 1;    var obj = {        a: 10,        c: this.a + 20,          fn: function () {            return this.a;        }    }    return obj.c;}console.log(foo());    // ?console.log(window.foo());  // ?是不是因为调用foo函数的时候,返回obj.c。而obj.c是this.a+20.此时的this是指向undefined,(因为在严格模式下)所以没有结果吗?如果没有用严格模式的话,这个this是指向window吗?怎么指向window有点模糊?请各位指教.Uncaught TypeError: Cannot read property 'a' of undefined at foo (test.html:18) at test.html:26
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

嗯呐,严格模式下指向undefined。非严格模式下指向window,至于为什么指向window就是个老生常谈的问题了。

this的指向是运行时绑定。何为运行时,指的就是函数的调用点在哪里。很显然,foo()的调用点在全局,所以this便指向全局对象或者undefined

可供参考


查看完整回答
反对 回复 2019-02-21
  • 1 回答
  • 0 关注
  • 499 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信