精慕HU
2019-02-18 12:20:25
代碼如下,不理解(function(){})();這個怎么理解?<body><h1 id="output"></h1><script language="javascript" type="text/javascript">var c = 10;( function() {if (c) {setTimeout(arguments.callee, 1000);}document.getElementById("output").innerHTML=c;c--;})();</script></body>
2 回答

函數式編程
TA貢獻1807條經驗 獲得超9個贊
(function(){})是一個標準的函數定義,但是沒有復制給任何變量。所以是沒有名字的函數,叫匿名函數。相當于定義一個匿名的 function ,并執行這個function。
舉例程序如:
function newfun()
{
if (c)
{
setTimeout(arguments.callee, 1000);
}
document.getElementById("output").innerHTML=c;
c--;
}
newfun();
擴展資料:
(function(){})();作用:javascript中沒用私有作用域的概念,如果在多人開發的項目上,你在全局或局部作用域中聲明了一些變量,可能會被其他人不小心用同名的變量給覆蓋掉。
根據javascript函數作用域鏈的特性,可以使用這種技術可以模仿一個私有作用域,用匿名函數作為一個“容器”。
“容器”內部可以訪問外部的變量,而外部環境不能訪問“容器”內部的變量,所以( function(){…} )()內部定義的變量不會和外部的變量發生沖突,俗稱“匿名包裹器”或“命名空間”。
JQuery使用的就是這種方法,將JQuery代碼包裹在( function (window,undefined){…jquery代碼…} (window)中,在全局作用域中調用JQuery代碼時,可以達到保護JQuery內部變量的作用。
添加回答
舉報
0/150
提交
取消