本文實例講述了JS中超越現實的匿名函數用法。分享給大家供大家參考,具體如下:
一般函數:
function show1(name){ alert(name); //打印:zhangsan }show1("zhangsan");匿名函數:
var show2 = function (name) { alert(name); //打印:張三 }show2("張三");上面2種定義函數的區別:
1.我們知道所有的function都會在window對象里
function show1(name){ alert(name); //打印:張三 } window.show1("張三");即使在函數定義之前調用
window.show1("張三"); function show1(name){ alert(name); //打印:張三 }這是因為這種”有名字”的函數在JS引擎初始化的時候就加載到作用域里面
2.如果是匿名函數
window.show2("李四"); var show2 = function (name) { alert(name); //打印:李四 }控制臺會打印:TypeError: window.show2 is not a function
二、如果我們需要合并上面2個函數
<script> function show(name) { return function () { alert(name); //內部函數是可以調用外層的變量的 } } show("王五");</script>猜猜會打印什么?什么也沒有,也不會報錯。這是因為執行show()只是返回了一個函數本身,并沒有執行這個函數。
show("王五")();這樣執行,就打印:王五
如果里面的函數也要傳入變量
<script> function show(name) { return function (age) { alert(name); //打印:王五 alert(age); //打印:18 } } show("王五")(18);</script><script> function show(name) { return function (name) { alert(name); } } show("王五")(18);</script>猜猜是打印“王五”還是“18”?只會打印“18”。
三、匿名函數的自執行
<script> (function (name) { alert(name); //打印:哈哈 })("哈哈")</script>以上是推薦的寫法。
其他寫法:
-function (name) { alert(name); //打印:哈哈 }("哈哈") +function (name) { alert(name); //打印:哈哈 }("哈哈") !function (name) { alert(name); //打印:哈哈 }("哈哈") [function (name) { alert(name); //打印:哈哈 }("哈哈")] new function (name) { alert(name); //打印:哈哈 }("哈哈") ~function (name) { alert(name); //打印:哈哈 }("哈哈") void function (name) { alert(name); //打印:哈哈 }("哈哈")感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.VeVB.COm/code/HtmlJsRun測試上述代碼運行效果。
更多關于JavaScript相關內容可查看本站專題:《JavaScript常用函數技巧匯總》、《javascript面向對象入門教程》、《JavaScript查找算法技巧總結》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》及《JavaScript數學運算用法總結》
希望本文所述對大家JavaScript程序設計有所幫助。
新聞熱點
疑難解答