您好,登錄后才能下訂單哦!
怎么在JavaScript中使用匿名函數?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
一般函數:
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); //打印:哈哈 }("哈哈")
看完上述內容,你們掌握怎么在JavaScript中使用匿名函數的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。