簡體   English   中英

從外部函數調用Javascript立即函數

[英]Javascript immediate function call from external function

我試圖在html文件下定義的按鈕單擊時調用test1.js中定義的立即函數。 它總是拋出錯誤“測試未定義”。 我有點意識到,作為立即函數,它會立即調用,因此會返回“未定義錯誤”。 但是,單擊按鈕有什么方法可以調用立即函數(訪問方法,屬性等)?

先感謝您。

 //test1.js var test = (function(){ alert(window); var tmp = 'hello'; }()); 
 <!DOCTYPE html> <html> <head> </head> <body> <script type="text/javascript" src="test1.js"></script> <input type="button" id="btn1" value="ClickMe!" /> <script type="text/javascript"> var btn = document.getElementById("btn1"); btn.addEventListener("click",fun1,false); function fun1(){ alert(test.tmp); } </script> </body> </html> 

您必須修改代碼,以便IIFE返回帶有tmp屬性的對象。

var test = (function(){
alert(window);
var tmp = 'hello';
return {tmp:tmp};
}());

在運行IIFE之后,您需要顯式返回一個對象,該對象包含想要使之可用的任何數據。 (只需像我在下面的代碼段中那樣添加收益)。

 //test1.js var test = (function(){ alert(window); // you need to return any values you want accessible return { tmp: "hello" } }()); 
 <!DOCTYPE html> <html> <head> </head> <body> <script type="text/javascript" src="test1.js"></script> <input type="button" id="btn1" value="ClickMe!" /> <script type="text/javascript"> var btn = document.getElementById("btn1"); btn.addEventListener("click",fun1,false); function fun1(){ alert(test.tmp); } </script> </body> </html> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM