国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 肃宁县| 贡山| 河南省| 静安区| 民权县| 遂川县| 陆河县| 佳木斯市| 哈尔滨市| 沧州市| 比如县| 嘉定区| 九寨沟县| 和林格尔县| 华安县| 方城县| 石河子市| 余姚市| 闽侯县| 肥西县| 寻乌县| 阿拉善盟| 永宁县| 隆子县| 拜城县| 莒南县| 兰西县| 新竹市| 十堰市| 左云县| 宝坻区| 威远县| 哈尔滨市| 崇左市| 读书| 十堰市| 抚远县| 萍乡市| 大化| 抚州市| 崇文区|