国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

IIFE 疑惑解析

Warren / 746人閱讀

摘要:?jiǎn)栴}解答定義了一個(gè)名為的立即執(zhí)行函數(shù)表達(dá)式我們來(lái)看這一段代碼,這里面包含著一個(gè)名為的具名函數(shù)表達(dá)式。

IIFE 是什么呢?

IIFE 是 Immediately-Invoked Function Expression 的英文縮寫(xiě),也就是立即執(zhí)行函數(shù)表達(dá)式。

下面是一個(gè) IIFE 代碼實(shí)例:

(function(){
        console.log( "Hello!" );
    })();
    
> Hello!    


遇到的問(wèn)題
// 定義了一個(gè)名為 IIFE 的函數(shù)
function IIFE(){
        console.log( "Hello!" );
    }   
    
IIFE();

> Hello!    
// 定義了一個(gè)名為 IIFE 的立即執(zhí)行函數(shù)表達(dá)式
(function IIFE(){
        console.log( "Hello!" );
    })();  
    
IIFE();

> Hello!
> Uncaught ReferenceError: IIFE is not defined

我們定義了一個(gè)名為 IIFE 的函數(shù),然后執(zhí)行,發(fā)現(xiàn)成功輸出 Hello!
但是我們定義了一個(gè)名為 IIFE 的立即執(zhí)行函數(shù)表達(dá)式,然后使用 IIFE() 去執(zhí)行它的時(shí)候卻發(fā)現(xiàn)報(bào)錯(cuò) IIFE is not defined
這是為什么呢?

要解答這個(gè)疑惑,我們需要了解函數(shù)表達(dá)式和函數(shù)聲明的區(qū)別。


函數(shù)表達(dá)式和函數(shù)聲明

在 JavaScript 中有三種定義函數(shù)的方式。

// 方式一:使用 Function 構(gòu)造函數(shù)來(lái)定義一個(gè)函數(shù)
var foo = new Function() 
// 方式二:使用 function 關(guān)鍵字來(lái)定義一個(gè)函數(shù)
function foo(){}
// 方式三:使用函數(shù)表達(dá)式來(lái)定義一個(gè)函數(shù)
var foo = function(){}

其中方式二和方式三非常相似。并且方式三種函數(shù)表達(dá)式也可以有自己名字,如下所示:

var foo = function foo(){}

那么函數(shù)表達(dá)式和函數(shù)聲明有什么區(qū)別呢?

當(dāng)一條語(yǔ)句以 function 開(kāi)頭的時(shí)候,它就是函數(shù)聲明。

函數(shù)表達(dá)式可以添加()來(lái)執(zhí)行,而函數(shù)聲明不能。

函數(shù)表達(dá)式分匿名函數(shù)表達(dá)式和具名函數(shù)表達(dá)式,但是函數(shù)表達(dá)式中的函數(shù)名稱只是函數(shù)體中的一個(gè)本地變量(在方式三中可以通過(guò) foo.name 來(lái)訪問(wèn)到該本地變量)。

函數(shù)表達(dá)式可以被用作一個(gè) IIFE,它一旦定義就運(yùn)行。


問(wèn)題解答
// 定義了一個(gè)名為 IIFE 的立即執(zhí)行函數(shù)表達(dá)式
(function IIFE(){
        console.log( "Hello!" );
    })();  
    
IIFE();

> Hello!
> Uncaught ReferenceError: IIFE is not defined

我們來(lái)看這一段代碼,這里面包含著一個(gè)名為 IIFE 的具名函數(shù)表達(dá)式。這個(gè)函數(shù)名稱只是函數(shù)體中的一個(gè)本地變量,所以我們?cè)谕獠客ㄟ^(guò)函數(shù)名訪問(wèn)不到該函數(shù)。


另外我們可以來(lái)看看 IIFE 的兩種定義方式,如下所示:

// 方式一:
(function(){
        console.log( "Hello!" );
    })();
// 方式二:    
(function (){
        console.log( "Hello!" );
    }()); 

由于 function 開(kāi)頭的語(yǔ)句會(huì)被識(shí)別為函數(shù)聲明,函數(shù)聲明不能被執(zhí)行,所以在這里添加括號(hào)來(lái)標(biāo)識(shí)這里是一個(gè)函數(shù)表達(dá)式,括號(hào)的結(jié)束位置可以在函數(shù)表達(dá)式定義結(jié)束,也可以在函數(shù)表達(dá)式執(zhí)行結(jié)束。與下面的代碼的效果是相同的。

var fn = function (){
        console.log( "Hello!" );
    };
( fn )();
( fn() );

> Hello!
> Hello!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/90758.html

相關(guān)文章

  • 立即執(zhí)行函數(shù)表達(dá)式(IIFE)

    摘要:另外,如果你想跳過(guò)這里,你可以直接跳到立即調(diào)用函數(shù)表達(dá)式進(jìn)行閱讀,但是我建議你讀完整篇文章。當(dāng)圓括號(hào)包裹函數(shù)時(shí),它會(huì)默認(rèn)將函數(shù)作為表達(dá)式去解析,而不是函數(shù)聲明。 原文:Immediately-Invoked Function Expression (IIFE) by Ben Alman原譯:立即執(zhí)行函數(shù) by Murphywuwu改增內(nèi)容: by blanu 也許你沒(méi)有注意到,我是一個(gè)...

    Yu_Huang 評(píng)論0 收藏0
  • JS學(xué)習(xí)系列 07 - 標(biāo)簽聲明(Label Statement)

    摘要:上面這段代碼,在中的執(zhí)行結(jié)果是什么呢大家思考分鐘好,分鐘已過(guò),大家有結(jié)果了嗎千萬(wàn)不要在瀏覽器的控制臺(tái)中去寫(xiě)這段代碼,雖然結(jié)果和你開(kāi)始想的結(jié)果一樣,但是,它是錯(cuò)誤的。這是在控制臺(tái)中執(zhí)行的結(jié)果這是在中的執(zhí)行結(jié)果可以看到兩個(gè)結(jié)果是不一樣的。 1. 引言 假設(shè)有這么一道題: for (var i = 0; i < 10; i++) { console.log(i); for (...

    ormsf 評(píng)論0 收藏0
  • Javascript知識(shí)點(diǎn):IIFE - 立即調(diào)用函數(shù)

    摘要:所以那些匿名函數(shù)附近使用括號(hào)或一些一元運(yùn)算符的慣用法,就是來(lái)引導(dǎo)解析器,指明運(yùn)算符附近是一個(gè)表達(dá)式。 Immediately-invoked Function Expression(IIFE,立即調(diào)用函數(shù)),簡(jiǎn)單的理解就是定義完成函數(shù)之后立即執(zhí)行。因此有時(shí)候也會(huì)被稱為自執(zhí)行的匿名函數(shù)(self-executing anonymous function)。 IIFE的叫法最早見(jiàn)于Ben...

    goji 評(píng)論0 收藏0
  • JS打包工具rollup——完全入門(mén)指南

    摘要:使用進(jìn)行模塊化打包在之前打包的過(guò)程中,命令行中輸出了一行,這表示并沒(méi)有收到任何模塊化的格式指令,因此會(huì)用默認(rèn)的模塊標(biāo)準(zhǔn)來(lái)對(duì)文件進(jìn)行打包。 前言 最近在做一個(gè)提供給瀏覽器和node同時(shí)使用的js的url模板工具類,在用什么打包工具上糾結(jié)了一段時(shí)間,正好有一天在知乎上看到了關(guān)于rollup的介紹,在自己試了試之后,就決定用rollup.js來(lái)打包自己的工具類了。 這篇文章主要是為了讓對(duì)ro...

    dreamtecher 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<