javascript是否可以不寫(xiě)函數(shù)名

這篇文章主要介紹了javascript是否可以不寫(xiě)函數(shù)名的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇javascript是否可以不寫(xiě)函數(shù)名文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

成都創(chuàng)新互聯(lián)成立以來(lái)不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場(chǎng)為導(dǎo)向”的快速反應(yīng)體系。對(duì)公司的主營(yíng)項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門(mén)戶設(shè)計(jì)推廣、行業(yè)門(mén)戶平臺(tái)運(yùn)營(yíng)、APP應(yīng)用開(kāi)發(fā)手機(jī)網(wǎng)站制作設(shè)計(jì)、微信網(wǎng)站制作、軟件開(kāi)發(fā)、西部信息服務(wù)器托管等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從成都創(chuàng)新互聯(lián)可以獲得的服務(wù)效果。

javascript函數(shù)可以不寫(xiě)函數(shù)名;沒(méi)有名稱的函數(shù)叫“匿名函數(shù)”,該函數(shù)僅包含function關(guān)鍵字、參數(shù)和函數(shù)體,語(yǔ)法為“function ([args]){statements}”。匿名函數(shù)的作用:1、通過(guò)匿名函數(shù)可以實(shí)現(xiàn)閉包;2、模擬塊級(jí)作用域,減少全局變量。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

javascript函數(shù)可以不寫(xiě)函數(shù)名,沒(méi)有名稱的函數(shù)叫“匿名函數(shù)”。

匿名函數(shù):沒(méi)有實(shí)際名字的函數(shù)。

匿名函數(shù)僅包含 function 關(guān)鍵字、參數(shù)和函數(shù)體。具體用法如下:

function ([args]) {
statements
}

首先我們聲明一個(gè)普通函數(shù):

//聲明一個(gè)普通函數(shù),函數(shù)的名字叫fn
function fn(){
    console.log("web-chubby");
}

然后將函數(shù)的名字去掉即是匿名函數(shù):

//匿名函數(shù),咦,運(yùn)行時(shí),你會(huì)發(fā)現(xiàn)報(bào)錯(cuò)啦!
function (){
    console.log("web-chubby");
}

到此,你會(huì)發(fā)現(xiàn)單獨(dú)運(yùn)行一個(gè)匿名函數(shù),由于不符合語(yǔ)法要求,報(bào)錯(cuò)啦!

javascript是否可以不寫(xiě)函數(shù)名

解決方法:只需要給匿名函數(shù)包裹一個(gè)括號(hào),使之成為表達(dá)式即可:

//匿名函數(shù)在其它應(yīng)用場(chǎng)景括號(hào)可以省略
(function (){
    //由于沒(méi)有執(zhí)行該匿名函數(shù),所以不會(huì)執(zhí)行匿名函數(shù)體內(nèi)的語(yǔ)句。
    console.log("web-chubby");
})

如何執(zhí)行和使用匿名函數(shù)?

1、執(zhí)行匿名函數(shù)

如果需要執(zhí)行匿名函數(shù),在匿名函數(shù)后面加上一個(gè)括號(hào)即可,也就是立即執(zhí)行函數(shù)

  • 小括號(hào)只將匿名函數(shù)包裹起來(lái) 后面跟隨執(zhí)行的小括號(hào)(常用)

(function () {
      alert('匿名函數(shù)執(zhí)行方式一')
})();
  • 小括號(hào)將匿名函數(shù)以及執(zhí)行匿名函數(shù)的小括號(hào)都包裹起來(lái) 整體構(gòu)成一個(gè)表達(dá)式

2、匿名函數(shù)傳參

與其他普通參數(shù)的傳參方式一樣,直接將參數(shù)寫(xiě)到括號(hào)內(nèi)即可:

 (function (m) {
      alert(m)
    }('這是匿名函數(shù)傳進(jìn)來(lái)的參數(shù)'));

匿名函數(shù)的應(yīng)用

  • 綁定事件時(shí)的方法

<input type="button" value="點(diǎn)我??!" id="sub">
<script>
    //獲得按鈕元素
    var sub=document.querySelector("#sub");
    //給按鈕增加點(diǎn)擊事件。
    sub.onclick=function(){
        alert("當(dāng)點(diǎn)擊按鈕時(shí)會(huì)執(zhí)行到我哦!");
    }
</script>
  • 函數(shù)表達(dá)式 將匿名函數(shù)賦值給一個(gè)變量

//將匿名函數(shù)賦值給變量fn。
var fn=function(){
    return "我是一只小小小小留下,怎么飛也飛不高!"
}
//調(diào)用方式與調(diào)用普通函數(shù)一樣
console.log(fn());//我是一只小小小小留下,怎么飛也飛不高!
  • 對(duì)象里面的函數(shù)屬性

var obj={
    name:"web-chubby",
    age:18,
    fn:function(){
        return "我叫"+this.name+"今年"+this.age+"歲了!";
    }
};
console.log(obj.fn());//我叫web-chubby今年18歲了!
  • 回調(diào)函數(shù),將匿名函數(shù)作為其中的一個(gè)參數(shù)

 //過(guò)濾出值為9的值
    let numArr = [1, 5, 9, 10]
    let newArr = numArr.filter(function (item) {
      if (item !== 9) {
        return item
      }
    });
  • 函數(shù)返回值,即將函數(shù)作為一個(gè)返回值

//將匿名函數(shù)作為返回值
function fn(){
    //返回匿名函數(shù)
    return function(){
        return "web-chubby";
    }
}
//調(diào)用匿名函數(shù)
console.log(fn()());//web-chubby
//或
var box=fn();
console.log(box());//web-chubby

模仿塊級(jí)作用域

塊級(jí)作用域,有的地方稱為私有作用域。JavaScript中是沒(méi)有塊級(jí)作用域的,例如:

if(1==1){//條件成立,執(zhí)行if代碼塊語(yǔ)句。
    var a=12;//a為全局變量
}
console.log(a);//12
for(var i=0;i<3;i++){
    console.log(i);
}
console.log(i);//4

if(){}for(){}等沒(méi)有自己的作用域。如果有,出了自己的作用域,聲明的變量就會(huì)立即被銷毀了。但是咱們可以通過(guò)匿名函數(shù)來(lái)模擬塊級(jí)作用域:

(function(){
    //這里是我們的塊級(jí)作用域(私有作用域)
})();

嘗試塊級(jí)作用域:

function fn(){
    (function(){
        var la="啦啦啦!";
    })();
    console.log(la);//報(bào)錯(cuò)---la is not defined
}
fn();

匿名函數(shù)的作用:

1、通過(guò)匿名函數(shù)可以實(shí)現(xiàn)閉包。在這里簡(jiǎn)單介紹一下:閉包是可以訪問(wèn)在函數(shù)作用域內(nèi)定義的變量的函數(shù)。若要?jiǎng)?chuàng)建一個(gè)閉包,往往都需要用到匿名函數(shù)。

2、模擬塊級(jí)作用域,減少全局變量。執(zhí)行完匿名函數(shù),存儲(chǔ)在內(nèi)存中相對(duì)應(yīng)的變量會(huì)被銷毀,從而節(jié)省內(nèi)存。再者,在大型多人開(kāi)發(fā)的項(xiàng)目中,使用塊級(jí)作用域,會(huì)大大降低命名沖突的問(wèn)題,從而避免產(chǎn)生災(zāi)難性的后果。自此開(kāi)發(fā)者再也不必?fù)?dān)心搞亂全局作用域了。

關(guān)于“javascript是否可以不寫(xiě)函數(shù)名”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“javascript是否可以不寫(xiě)函數(shù)名”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享名稱:javascript是否可以不寫(xiě)函數(shù)名
瀏覽地址:http://muchs.cn/article48/pdjshp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)云服務(wù)器、網(wǎng)站策劃、標(biāo)簽優(yōu)化做網(wǎng)站、微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)