请解释为什么在以下示例中输出为“未定义”?

时间:2019-02-26 05:49:32

标签: javascript html function

在以下示例中,为什么结果的值是'undefined'?请解释一下这是如何计算的?

<script>
var foo = {
  bar: function() { return this.baz; },
  baz: 1
};

var a = (function(){
  return typeof arguments[0]();
})(foo.bar);

console.log(a);
</script>

  

注意:我已经浏览了以下链接,但并没有对此进行解释   例。这里没有构造函数...   How to access the correct `this` inside a callback?

1 个答案:

答案 0 :(得分:1)

public bool CheckAll(params object[] refs) => refs.All(x => x != null); ... if (CheckAll(control?.Meta, control?.State)) { } Window上下文中执行,但是它没有在名称​​ bar 中定义任何对象属性(该属性是 foo < / em>)。这就是为什么您得到arguments[0]()的原因。要解决此问题,可以绑定对象。

更改

undefined

收件人

foo.bar

foo.bar.bind(foo)