国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Javascript學(xué)習(xí)筆記之 函數(shù)篇(一) : 函數(shù)聲明和函數(shù)表達(dá)式

2019-11-20 14:24:25
字體:
供稿:網(wǎng)友

函數(shù)聲明

function foo() {}

函數(shù) foo 將會(huì)在整個(gè)程序執(zhí)行前被 hoist (提升),因此它在定義 foo 函數(shù)的整個(gè) scope (作用域)中都是可用的。即使在函數(shù)定義之前調(diào)用它也沒問題。

foo(); // Works because foo was created before this code runsfunction foo() {}

因?yàn)槲掖蛩銓iT寫篇介紹作用域的文章,所以這里就不詳述了。

函數(shù)表達(dá)式

對(duì)于函數(shù)聲明,函數(shù)的名稱是必須的,而對(duì)于函數(shù)表達(dá)式而言則是可選的,因此,就出現(xiàn)了匿名函數(shù)表達(dá)式和命名函數(shù)表達(dá)式。如下:

函數(shù)聲明: function functionName (){  }
函數(shù)聲明: function functionName[可選](){  }
那么我就知道,如果沒有函數(shù)名的話,一定就是函數(shù)表達(dá)式,但是對(duì)于有函數(shù)名的情況該如何判斷呢?
Javascript 規(guī)定如果整個(gè)函數(shù)體是作為表達(dá)式的一部分時(shí),那么它就是函數(shù)表達(dá)式,否則即是函數(shù)聲明。以下為表達(dá)式:

var fuc = foo(){}

我們?cè)倥e幾個(gè)極端的表達(dá)式例子:

!function foo(){}true && function foo(){}

以上的語句這里只是為了區(qū)分函數(shù)表達(dá)式,一般不會(huì)這樣寫。那么用一個(gè)對(duì)比的例子來看看效果:

foo1();//foo1 is not defined foo2();//works because foo2 was created before this code runs!function foo1() {  alert('foo1 works');};function foo2() {  alert('foo2 works');};

匿名函數(shù)表達(dá)式

var foo = function() {};

上面的例子將一個(gè)匿名函數(shù)賦值給了變量 foo。

foo; // 'undefined'foo(); // this raises a TypeErrorvar foo = function() {};

由于 var 是一個(gè)聲明所以這里對(duì)變量 foo 進(jìn)行 hoist (提升),因此當(dāng)程序執(zhí)行時(shí),變量 foo 是可調(diào)用的。
但是由于賦值語句只有在運(yùn)行時(shí)才生效,所以變量 foo 的值為 undefined。

命名函數(shù)表達(dá)式

另一個(gè)要講到的就是命名函數(shù)的賦值。

var foo = function bar() {  bar(); // Works};bar(); // ReferenceError

在這里,命名函數(shù) bar 賦值給了變量 foo,所以在函數(shù)聲明外是不可見的,但在 bar 函數(shù)內(nèi)部仍然可以調(diào)用。這是因?yàn)?Javascript 對(duì)命名函數(shù)處理的機(jī)制,函數(shù)的名稱永遠(yuǎn)在函數(shù)內(nèi)部的作用域中有效。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 永善县| 饶河县| 宜兰县| 蕉岭县| 海林市| 普宁市| 桦南县| 綦江县| 白城市| 武夷山市| 正宁县| 米林县| 喜德县| 旺苍县| 临湘市| 长乐市| 什邡市| 隆化县| 永胜县| 忻州市| 龙海市| 瑞丽市| 航空| 宁陕县| 安塞县| 邳州市| 道孚县| 镇原县| 金沙县| 富宁县| 夏邑县| 敦化市| 长乐市| 湘西| 拉萨市| 和田县| 灌云县| 永修县| 左权县| 方正县| 襄垣县|