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

一个面试题中,关于函数方法的之间调用的问题?

一个面试题中,关于函数方法的之间调用的问题?

跃然一笑 2018-08-02 18:33:59
  function foo() {      foo.a=function(){        console.log(1)      }      this.a=function(){        console.log(2)      }      a=function () {        console.log(3)      }      var a = function(){        console.log(4)      }  }  foo.a=function(){    console.log(6)  }  var obj = new foo();  foo.a()    //为什么是1 不是直接调用吗?
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

js的执行顺序
function foo() {} 定义全局变量foo
foo.a = function(){} 给全局变量foo的a属性赋值
var obj = new foo();构造函数调用foo
进入foo函数:
foo.a=function(){}给全局变量foo的a属性覆盖操作
this.a=function(){}因为用了new关键字 this指向obj所以这句话是obj.a=...
下面两句要一起看
a = function(){}本来这句没有var是默认全局变量
var a = function(){}但是这一句用了var导致变量声明提前所以上面一句的a也变成了局部变量这一句覆盖了a
所以归根结底foo.a只执行了两次操作

查看完整回答
反对 回复 2018-08-05
  • 2 回答
  • 0 关注
  • 1109 浏览
慕课专栏
更多

添加回答

举报

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