-1

在我的 nodejs 应用程序中,我正在使用window.myfunction = function(){...}方式通信或调用两个不同 js 文件中存在的函数。确实它工作得很好。我也经历了这个问题,这有助于我更好地学习。

我的问题/疑问是,使用window对象调用用户定义的函数可以吗?
(在客户端的性能、跨浏览器兼容性和明显的安全性方面还可以。)谢谢。
(我是 javascript 编程的初学者)

4

3 回答 3

2

这就是我们在谈论时所谈论的Global Scope

尝试减少我们放入全局范围的代码量很重要,因为它增加了与另一个库或文件发生冲突的可能性。

例如,如果您有 companyA.js 和 demoB.js,并且它们都包含retrieveItems在全局范围内调用的方法,那么就会发生冲突。

作为 JS 开发人员,您需要意识到这个问题,并尝试采取一些措施来避免这些问题。

于 2013-11-12T05:33:20.127 回答
0

在浏览器的上下文中,所有全局函数都附加到窗口对象,所以如果你有

function myFunction() {
   alert("Hey!");
}

然后

myFunction();

window.myFunction();

是同一个电话

是的,你可以定义你的功能,window.myFunction = function() { /*...*/ }但这很奇怪

于 2013-11-12T04:41:33.597 回答
0

在 Javascript 编程中有一个全局对象,它是一个包含所有全局变量的根对象。全局对象取决于您使用的运行时。不确定 Node.js,但如果 javascript 在浏览器中运行,则全局对象是 window 对象。如果您正在创建一个全局变量,那么您正在创建窗口对象的属性。

    var def="你好";

您可以使用 def 变量或使用 window.def 访问上述值这也适用于函数。

    函数 myFunc(){
       console.log("你好");
    }

所以,如果你看到 window 对象,你会发现创建了 myFunc 属性,它保存了这个函数。您可以使用 myFunc(); 执行此功能;直接或使用 window.myFunc();

全局变量导致混乱,我不太赞成全局变量。尝试使用 IIFE。按照下面的链接。

http://jkoder.com/avoid-polluting-global-namespace-in-javascript-iifeimmediately-invoked-function-expression/

于 2016-08-14T15:40:46.470 回答