javascript函数问题

function Foo() {
  getName = function () { 
    alert(121); 
  }
  return this
}
Foo().getName()

上面的代码为什么要return this
getName 为什么不用var

阅读 1.5k
3 个回答

因为foo在全局环境下运行,所以this指向全局
getName没有用var,声明的是全局变量
foo().getName = this.getName()

1、return this 是为了链式调用。类似jquery的 $(dom).append('body').val('123')
2、getName 不用var为了把getName暴露给 window (return this == return window)。

Foo()返回this为调用Foo时的this,即global;不写会返回undefined
getName = xxx 没有使用var,即把getName声明到了global对象;
不写var这种行为很不好,感觉会被人骂的.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题