JS中超越現(xiàn)實(shí)的匿名函數(shù)用法實(shí)例分析
本文實(shí)例講述了JS中超越現(xiàn)實(shí)的匿名函數(shù)用法。分享給大家供大家參考,具體如下:
一般函數(shù):
function show1(name){
alert(name); //打印:zhangsan
}
show1("zhangsan");
匿名函數(shù):
var show2 = function (name) {
alert(name); //打印:張三
}
show2("張三");
上面2種定義函數(shù)的區(qū)別:
1.我們知道所有的function都會在window對象里
function show1(name){
alert(name); //打印:張三
}
window.show1("張三");
即使在函數(shù)定義之前調(diào)用
window.show1("張三");
function show1(name){
alert(name); //打印:張三
}
這是因?yàn)檫@種”有名字”的函數(shù)在JS引擎初始化的時候就加載到作用域里面
2.如果是匿名函數(shù)
window.show2("李四");
var show2 = function (name) {
alert(name); //打印:李四
}
控制臺會打?。?span style="color: #ff0000">TypeError: window.show2 is not a function
二、如果我們需要合并上面2個函數(shù)
<script>
function show(name) {
return function () {
alert(name); //內(nèi)部函數(shù)是可以調(diào)用外層的變量的
}
}
show("王五");
</script>
猜猜會打印什么?什么也沒有,也不會報錯。這是因?yàn)閳?zhí)行show()只是返回了一個函數(shù)本身,并沒有執(zhí)行這個函數(shù)。
show("王五")();
這樣執(zhí)行,就打?。和跷?/p>
如果里面的函數(shù)也要傳入變量
<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”。
三、匿名函數(shù)的自執(zhí)行
<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代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
正則表達(dá)式,替換所有HTML標(biāo)簽的簡單實(shí)例
下面小編就為大家?guī)硪黄齽t表達(dá)式,替換所有HTML標(biāo)簽的簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11
Three.js+React實(shí)現(xiàn)3D文字懸浮效果
這篇文章主要介紹了如何利用Three.js+React制作出神奇的3D文字懸浮效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動手嘗試一下2022-03-03
JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()
這篇文章主要介紹了JS中的hasOwnProperty()、propertyIsEnumerable()和isPrototypeOf()的相關(guān)資料,需要的朋友可以參考下2016-08-08
js對字符串和數(shù)字進(jìn)行加法運(yùn)算的一些情況
這篇文章主要介紹了js對字符串和數(shù)字進(jìn)行加法運(yùn)算的一些情況,需要的朋友可以參考下2023-02-02

