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

資訊專欄INFORMATION COLUMN

《javascript高級(jí)程序設(shè)計(jì)》筆記:Function類型

habren / 3288人閱讀

摘要:這么長(zhǎng)時(shí)間沒有寫博客,就是因?yàn)楹瘮?shù)這部分比較麻煩,自己一直想抽出大把的時(shí)間來研究這個(gè),可是結(jié)果卻是一拖再拖,這樣不好。

這么長(zhǎng)時(shí)間沒有寫博客,就是因?yàn)楹瘮?shù)這部分比較麻煩,自己一直想抽出大把的時(shí)間來研究這個(gè),可是結(jié)果卻是一拖再拖,這樣不好。有時(shí)間就寫才是王道啊,不然這計(jì)劃得一直卡在這里了..

1. 幾個(gè)概念

函數(shù):將代碼進(jìn)行封裝, 復(fù)用的邏輯單元(代碼)
對(duì)象:無(wú)序鍵值對(duì)的集合
數(shù)組:有序鍵值對(duì)的集合, 數(shù)組的索引號(hào)就是鍵
屬性:對(duì)象屬性的值是一個(gè)普通的數(shù)據(jù)
方法:對(duì)象的屬性是一個(gè)函數(shù)
對(duì)象的成員:包括屬性和方法

另外關(guān)于函數(shù),你應(yīng)該時(shí)刻記住的是:函數(shù)也是對(duì)象,函數(shù)名是一個(gè)指向函數(shù)對(duì)象的指針。因此,函數(shù)也可以作為參數(shù)傳遞

2. 函數(shù)的三種創(chuàng)建方式 2.1 函數(shù)表達(dá)式

標(biāo)準(zhǔn)語(yǔ)法:

var fn = function(){}; // 只能在聲明之后調(diào)用

有一種寫法也需要注意,可能在面試題中會(huì)遇到:

var fn = function fn1(){}; // 不會(huì)報(bào)錯(cuò)

有這樣一個(gè)例子,能夠很好的區(qū)分兩種寫法的差異

// 標(biāo)準(zhǔn)寫法
var fn = function(){
    console.log(fn); // function (){ console.log(fn) }
};
fn();
console.log(fn); // function (){ console.log(fn) }

// 非主流寫法
var fn1 = function fn2() {
    console.log(fn1);
    console.log(fn2);
}
fn1();
console.log(fn1);
console.log(fn2);

為了更有說服力,我直接上圖吧!

結(jié)論
函數(shù)表達(dá)式聲明方式中,function后面也可以添加函數(shù)名,但僅能在函數(shù)內(nèi)部使用

2.2 函數(shù)聲明

語(yǔ)法:

function fn(){}; // 能夠在作用域下的任何地方使用
2.3 構(gòu)造函數(shù)聲明

語(yǔ)法:

var fn = new Function(param1, param2, body)

Function構(gòu)造函數(shù)可以接受任意數(shù)量的參數(shù),但最后一個(gè)參數(shù)始終被看做函數(shù)體,相當(dāng)于一個(gè)小型的js編譯器(執(zhí)行效率低)

var fn = new Function(num1, num2, “return num1+num2”);
// 等價(jià)于
function fn(num1, num2) {
    return num1 + num2;
}
// 或
var fn = function(num1, num2) {
    return num1 + num2;
}
2.3 函數(shù)聲明和函數(shù)表達(dá)式的區(qū)別

1 函數(shù)聲明會(huì)把整個(gè)函數(shù)體提升到最前面function fn() {},因此調(diào)用的位置沒有先后之分;函數(shù)表達(dá)式只會(huì)把函數(shù)名字提升var fn = function() {}; 此時(shí)函數(shù)作為數(shù)據(jù),因此必須先聲明后使用

2 函數(shù)聲明不能夠出現(xiàn)在其他語(yǔ)句塊中!函數(shù)聲明能夠出現(xiàn)的位置: 全局環(huán)境中其他函數(shù)內(nèi)部

個(gè)人建議:從代碼可維護(hù)性出發(fā),盡量使用函數(shù)表達(dá)式的方式來聲明函數(shù)

3. 函數(shù)內(nèi)部屬性

1.name屬性

函數(shù)名.name => 獲取字符串類型的函數(shù)名稱

// 外部
function fn1(){};
console.log(fn1.name); // fn1
// 內(nèi)部
function fn2() {
    console.log(fn2.name); // fn2
}
fn2();

2.length屬性

函數(shù)名.length => 獲取形參的個(gè)數(shù),未傳參時(shí)返回0

// 外部
function fn1(a,b){};
console.log(fn1.length); // 2
// 內(nèi)部
function fn2(a,b,c) {
    console.log(fn2.length); // 3
}
fn2();

3.caller屬性

函數(shù)名.caller => 獲得調(diào)用函數(shù)的函數(shù)引用(函數(shù)在哪被調(diào)用),如果在全局中調(diào)用當(dāng)前函數(shù),值為null

var inner = function() {
    alert(inner.caller);
};
var outer = function() {
    inner();
};
outer(); // function() { inner(); };
inner(); // null

4.arguments屬性

arguments只能在函數(shù)內(nèi)部使用,用來獲取傳入的實(shí)參。是一個(gè)偽數(shù)組

其內(nèi)部有如下屬性:
arguments.length:獲取實(shí)參的個(gè)數(shù)
arguments.callee:獲取當(dāng)前函數(shù)的引用,一般用在匿名函數(shù)遞歸中

// 階乘
function factorial(num) {
    if(num <= 1) {
        return 1;
    } else {
        return num * arguments.callee(num - 1);
    }
}

5.this屬性

this會(huì)在下一篇博客中詳細(xì)講解,先記住一句話:
this的指向和函數(shù)執(zhí)行的環(huán)境相關(guān),與它聲明的環(huán)境無(wú)關(guān)

4.函數(shù)的形參和實(shí)參

形參:函數(shù)聲明時(shí)的參數(shù),起占位作用——函數(shù)名.length(形參個(gè)數(shù))
實(shí)參:函數(shù)調(diào)用時(shí)的參數(shù),實(shí)際參與運(yùn)算的值—arguments.length(實(shí)參個(gè)數(shù))

當(dāng)形參個(gè)數(shù)大于實(shí)參時(shí),多余的形參將設(shè)置成undefined
當(dāng)實(shí)參個(gè)數(shù)大于形參時(shí),無(wú)法直接獲得所有的實(shí)參,通過arguments獲得實(shí)參

參數(shù)傳遞的理解:形參相當(dāng)于一個(gè)具有局部作用域不需要聲明的和實(shí)參指向相同堆地址對(duì)象的值,其類型與實(shí)參相同

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

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

相關(guān)文章

  • javascript高級(jí)程序設(shè)計(jì)筆記:內(nèi)存與執(zhí)行環(huán)境

    摘要:因此,所有在方法中定義的變量都是放在棧內(nèi)存中的當(dāng)我們?cè)诔绦蛑袆?chuàng)建一個(gè)對(duì)象時(shí),這個(gè)對(duì)象將被保存到運(yùn)行時(shí)數(shù)據(jù)區(qū)中,以便反復(fù)利用因?yàn)閷?duì)象的創(chuàng)建成本通常較大,這個(gè)運(yùn)行時(shí)數(shù)據(jù)區(qū)就是堆內(nèi)存。 上一篇:《javascript高級(jí)程序設(shè)計(jì)》筆記:繼承近幾篇博客都會(huì)圍繞著圖中的知識(shí)點(diǎn)展開 showImg(https://segmentfault.com/img/bVY0C4?w=1330&h=618);...

    fuyi501 評(píng)論0 收藏0
  • 《你不知道的javascript筆記_對(duì)象&原型

    摘要:上一篇你不知道的筆記寫在前面這是年第一篇博客,回顧去年年初列的學(xué)習(xí)清單,發(fā)現(xiàn)僅有部分完成了。當(dāng)然,這并不影響年是向上的一年在新的城市穩(wěn)定連續(xù)堅(jiān)持健身三個(gè)月早睡早起游戲時(shí)間大大縮減,學(xué)會(huì)生活。 上一篇:《你不知道的javascript》筆記_this 寫在前面 這是2019年第一篇博客,回顧去年年初列的學(xué)習(xí)清單,發(fā)現(xiàn)僅有部分完成了。當(dāng)然,這并不影響2018年是向上的一年:在新的城市穩(wěn)定、...

    seasonley 評(píng)論0 收藏0
  • javascript高級(jí)程序設(shè)計(jì)筆記:繼承

    摘要:繼承和前面兩篇文章中的知識(shí)非常相關(guān),如果對(duì)函數(shù)創(chuàng)建原理和原型鏈不熟悉,請(qǐng)猛戳高級(jí)程序設(shè)計(jì)筆記創(chuàng)建對(duì)象高級(jí)程序設(shè)計(jì)筆記原型圖解繼承,通俗的說,就是將自身不存在的屬性或方法,通過某種方式為自己所用文章分別介紹原型鏈繼承繼承借用構(gòu)造函數(shù)繼承組合繼 繼承和前面兩篇文章中的知識(shí)非常相關(guān),如果對(duì)函數(shù)創(chuàng)建原理和原型鏈不熟悉,請(qǐng)猛戳:《javascript高級(jí)程序設(shè)計(jì)》筆記:創(chuàng)建對(duì)象《javascri...

    JerryC 評(píng)論0 收藏0
  • 讀書筆記(02) - 可維護(hù)性 - JavaScript高級(jí)程序設(shè)計(jì)

    摘要:解耦優(yōu)勢(shì)代碼復(fù)用,單元測(cè)試。常用比較誤區(qū)可同時(shí)判斷,可用來判斷對(duì)象屬性是否存在。使用作判斷無(wú)法進(jìn)行充分的類型檢查。文件中應(yīng)用常量參考文檔高級(jí)程序設(shè)計(jì)作者以樂之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVburXw?w=500&h=400); 編寫可維護(hù)性代碼 可維護(hù)的代碼遵循原則: 可理解性 (方便他人理解) 直觀...

    k00baa 評(píng)論0 收藏0
  • 讀書筆記(04) - 錯(cuò)誤監(jiān)控 - JavaScript高級(jí)程序設(shè)計(jì)

    摘要:項(xiàng)目中我們可通過設(shè)置采集率,或?qū)σ?guī)定時(shí)間內(nèi)數(shù)據(jù)匯總再上報(bào),減少請(qǐng)求數(shù)量,從而緩解服務(wù)端壓力。借鑒別人的一個(gè)例子只采集上報(bào)錯(cuò)誤參考文檔高級(jí)程序設(shè)計(jì)如何優(yōu)雅處理前端異常作者以樂之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVbnuud?w=640&h=640); 錯(cuò)誤類型 即時(shí)運(yùn)行錯(cuò)誤 (代碼錯(cuò)誤) 資源加載錯(cuò)誤 常見...

    Null 評(píng)論0 收藏0
  • javascript高級(jí)程序設(shè)計(jì)筆記:變量及變量檢測(cè)

    摘要:變量的特點(diǎn)變量是松散類型的,所謂松散類型就是可以用來保存任何類型的數(shù)據(jù)。 變量的特點(diǎn) js變量是松散類型的,所謂松散類型就是可以用來保存任何類型的數(shù)據(jù)。換句話說, 每個(gè)變量?jī)H僅是一個(gè)用于保存值的占位符而已 js變量可以用來保存任何值,未經(jīng)過初始化的變量,會(huì)保存一個(gè)特殊的值—undefined,如:var msg; js變量的初始化并不會(huì)為它標(biāo)記類型;初始化的過程就是給變量賦一個(gè)值那...

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

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

0條評(píng)論

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