Javascript 将函数指定给窗口对象

Javascript 将函数指定给窗口对象,javascript,Javascript,我开始使用现有的rails应用程序,发现了一些我不理解的东西。每个js函数(写为coffe)都是按照下面的样式声明的 this.functionA = function(){} 然后像这样调用: functionA() 并没有任何名称空间,所以所有函数都被分配给窗口对象。 我删除了这个,因为我认为它不是必需的,但我得到的错误是function()不存在。为什么我会犯这个错误?这是以上述方式声明函数的原因吗?这很奇怪,因为在JS中,当声明没有var关键字时,声明被附加到全局范围,但我不知道

我开始使用现有的rails应用程序,发现了一些我不理解的东西。每个js函数(写为coffe)都是按照下面的样式声明的

 this.functionA = function(){}
然后像这样调用:

 functionA()
并没有任何名称空间,所以所有函数都被分配给窗口对象。
我删除了
这个
,因为我认为它不是必需的,但我得到的错误是function()不存在。为什么我会犯这个错误?这是以上述方式声明函数的原因吗?

这很奇怪,因为在JS中,当声明没有
var
关键字时,声明被附加到全局范围,但我不知道为什么您会收到未定义的错误,不应该生成该错误,请改为尝试此
var function=function(){function
,它将不可用。显式分配给全局作用域可能是一个反模式,但在这里确实有用。是的,它是用coffescript编写的,老实说,所有函数都声明为@function=function(){},我删除了“@”,但我认为这与我的问题中的情况相同。这很奇怪,因为在JS中,当在没有
var
关键字的情况下声明某个内容时,声明会附加到全局范围,但我不知道您为什么会收到未定义的错误,不应该生成该错误,请改为尝试此
var function=function(){}function
,它将不可用。显式分配给全局作用域可能是一个反模式,但在这里确实有用。是的,它是用coffescript编写的,老实说,所有函数都声明为@function=function(){},我删除了“@”,但我认为这与我的问题中的情况相同。