亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

函數(shù)知多少(一)

2json / 1185人閱讀

摘要:從定義函數(shù)說(shuō)起如何定義函數(shù)一般來(lái)說(shuō),定義函數(shù)的方式有兩種,分別是函數(shù)聲明和函數(shù)表達(dá)式。我們聲明了一個(gè)變量,接著又定義了一個(gè)函數(shù),我們通過(guò)監(jiān)視窗口發(fā)現(xiàn)一直被定義成了一個(gè)函數(shù),顯然,函數(shù)聲明的優(yōu)先級(jí)高于變量聲明。

從定義函數(shù)說(shuō)起 如何定義函數(shù)?

一般來(lái)說(shuō),定義函數(shù)的方式有兩種,分別是函數(shù)聲明函數(shù)表達(dá)式

//函數(shù)聲明
function foo1() {
    console.log("hello");
}

//函數(shù)表達(dá)式
var foo2 = function () {
    console.log("javascript");
}

第一次使用的時(shí)候并沒(méi)有覺(jué)得這兩者有什么特別的差別,那我們來(lái)試試在最前面加入執(zhí)行函數(shù)的代碼,是最前面哦。

foo1();
foo2();


執(zhí)行一下,WTF!怎么報(bào)錯(cuò)了,我們看看錯(cuò)誤是什么?Uncaught TypeError: foo1 is not a function,OK,我們來(lái)設(shè)置斷點(diǎn)來(lái)分析一下,這里,我們把foo1foo2加入監(jiān)視窗口;我們可以看到foo1函數(shù)執(zhí)行之前就已經(jīng)獲得了定義,而foo2函數(shù)卻顯示未定義,到這里我們就明白了。但是為什么foo1就生效了呢?我們來(lái)說(shuō)說(shuō)聲明提升。

聲明提升

剛才我們?cè)谝婚_(kāi)始調(diào)用foo1的時(shí)候發(fā)現(xiàn)該函數(shù)已經(jīng)被定義了,證實(shí)了采用聲明形式定義的函數(shù)有聲明提升的特征,何為聲明提升?即可以在定義該函數(shù)之前調(diào)用。而采用表達(dá)式形式定義的函數(shù)只能順序執(zhí)行,你不能在定義該函數(shù)之前調(diào)用(大家可以自己試試把調(diào)用函數(shù)的代碼放在不同位置,以及調(diào)換兩個(gè)函數(shù)的位置)。
接下來(lái)我們通過(guò)另一段代碼,來(lái)看看函數(shù)聲明和變量聲明。

var foo;
function foo() {
    console.log("hello javascript");
}
foo();

我們聲明了一個(gè)變量foo,接著又定義了一個(gè)函數(shù)foo,我們通過(guò)監(jiān)視窗口發(fā)現(xiàn)foo一直被定義成了一個(gè)函數(shù),顯然,函數(shù)聲明的優(yōu)先級(jí)高于變量聲明。真的是這樣嗎?把上面的代碼稍微改造一下。

var foo = "1";
function foo() {
    console.log("hello javascript");
}
foo();

執(zhí)行一下,咦?又報(bào)錯(cuò)了,Uncaught TypeError: foo is not a function,在執(zhí)行var foo = "1"之后,監(jiān)視器寫著foo: "1",我們聲明的函數(shù)被變量覆蓋了,到這里我們可以得到結(jié)論了,經(jīng)過(guò)初始化的變量聲明優(yōu)先級(jí)高于函數(shù)聲明。

關(guān)于參數(shù)

在函數(shù)中引入?yún)?shù),想必大家肯定很熟悉了。

var str = "hello world";

(function foo(obj) {
    console.log("first inside:" + obj);//first inside:hello world
    obj = "hello javascript";
    console.log("second inside:" + obj);//second inside:hello javascript
}(str));

console.log("outside:" + str);//outside:hello world

我們都知道在函數(shù)內(nèi)部的改變?nèi)肿兞康闹祵?duì)外部是不可見(jiàn)的,就像上面的代碼,我們?cè)诤瘮?shù)內(nèi)部改變str的值,對(duì)外部毫無(wú)影響?,F(xiàn)在我們把參數(shù)換成對(duì)象試試會(huì)怎樣。

var people = {
    age: 18,
    sex: "man",
    location: "hangzhou"
};

(function foo(obj) {
    console.log("first inside:" + obj.age);//first inside:18
    obj.age = 23;
    console.log("second inside:" + obj.age);//second inside:23
}(people));

console.log("outside:" + people.age);//outside:23

漲知識(shí)了,如果參數(shù)是對(duì)象,在函數(shù)內(nèi)部對(duì)該對(duì)象做出的改變對(duì)外部是可見(jiàn)的。

課后題?
function foo() {

}
foo();
var foo = function () {

}

foo()執(zhí)行的是哪個(gè)函數(shù)呢?把三段代碼的位置調(diào)換一下又會(huì)有是什么情況呢?大家可以自己研究一下。

寫在最后

昨天開(kāi)始打算寫這篇文章之前,本以為很好理解的,然而自己就被第一個(gè)定義函數(shù)的方式卡了很久,之前聽(tīng)室友講維護(hù)一個(gè)blog就夠累的了,還錄制教學(xué)視頻、維護(hù)個(gè)人網(wǎng)站?當(dāng)時(shí)還不覺(jué)得,結(jié)果輪到自己上手寫文章的時(shí)候才發(fā)現(xiàn)真的很不容易,真的很佩服一直堅(jiān)持寫blog,分享文章的那些人,正是你們樂(lè)于分享,才讓更多的開(kāi)發(fā)者能夠了解到更廣泛的知識(shí)。另外,作者作為前端新兵,本文肯定有不當(dāng)之處,歡迎批斗~~~

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/86234.html

相關(guān)文章

  • 函數(shù)多少(二)

    摘要:前言上次聊了關(guān)于定義函數(shù)的知識(shí),還有參數(shù)方面的,這次先補(bǔ)充一點(diǎn)參數(shù)小知識(shí),還有簡(jiǎn)單的講一下閉包。在這里,函數(shù)包含了一個(gè)內(nèi)部函數(shù),所以可以使用引入的參數(shù)。我們把函數(shù)作為返回值賦給,當(dāng)然,同時(shí)返回的還有。 前言 上次聊了關(guān)于定義函數(shù)的知識(shí),還有參數(shù)方面的,這次先補(bǔ)充一點(diǎn)參數(shù)小知識(shí),還有簡(jiǎn)單的講一下閉包。 arguments對(duì)象 引入的參數(shù)會(huì)保存在arguments數(shù)組對(duì)象中,第一個(gè)引入的參...

    Eidesen 評(píng)論0 收藏0
  • [js高手之路]this多少

    摘要:關(guān)鍵字在中的變化非常的靈活,如果用的不好就非常惡心,用的好程序就非常的優(yōu)雅,靈活,飄逸所以掌握的用法,是每一個(gè)前端工程師必知必會(huì)的而且這個(gè)也是一些大公司筆試中常見(jiàn)的考察項(xiàng)第一種單獨(dú)的,指向的是這個(gè)對(duì)象注當(dāng)前的執(zhí)行環(huán)境是所以指向了第二種全局函 this關(guān)鍵字在javascript中的變化非常的靈活,如果用的不好就非常惡心,用的好,程序就非常的優(yōu)雅,靈活,飄逸.所以掌握this的用法,是每...

    APICloud 評(píng)論0 收藏0
  • JavaScript數(shù)組多少

    摘要:數(shù)組中的元素自動(dòng)前移,比慢的多。該方法接受一個(gè)返回值為布爾類型的函數(shù),對(duì)數(shù)組中得每個(gè)元素使用該函數(shù),如果對(duì)于所有的元素,該函數(shù)都返回則該方法返回。 數(shù)組的維基百科定義是: 在編程語(yǔ)言中,數(shù)組數(shù)據(jù)結(jié)構(gòu)(英語(yǔ):array data structure),簡(jiǎn)稱數(shù)組(英語(yǔ):Array),是一種數(shù)據(jù)結(jié)構(gòu),是數(shù)據(jù)元素(elements)的集合。元素可以通過(guò)索引來(lái)任意存取,索引通常是數(shù)字,用來(lái)計(jì)算元...

    Coding01 評(píng)論0 收藏0
  • 【JS基礎(chǔ)】類型轉(zhuǎn)換多少

    摘要:正確的解釋是允許在相等比較中進(jìn)行強(qiáng)制類型轉(zhuǎn)換,而不允許。參考資料小議下字符串比較大小中的強(qiáng)制類型轉(zhuǎn)換核心概念類型轉(zhuǎn)換對(duì)象和方法隱式類型轉(zhuǎn)換小結(jié) 開(kāi)胃菜 先說(shuō)一個(gè)題外話,我在工作中遇到一個(gè)問(wèn)題,需要比較 08:00 和 09:00 的大小,最后我找到三種方法: 在兩個(gè)字符串前后各拼接相同的年月日和秒,拼成完整的時(shí)間格式進(jìn)行比較: var head = 2016-01-01 var fo...

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

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

0條評(píng)論

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