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

資訊專欄INFORMATION COLUMN

犀牛書——CHAP8:函數(shù)

he_xd / 807人閱讀

摘要:若有函數(shù)名,則在函數(shù)體內(nèi)指代該函數(shù)本身,并且只存在于函數(shù)體中。返回值與普通函數(shù)相同。如果嵌套函數(shù)作為普通函數(shù)調(diào)用,則指向全局對象或者構(gòu)造函數(shù)調(diào)用在函數(shù)或者方法調(diào)用之前使用關(guān)鍵字,則為構(gòu)造函數(shù)調(diào)用。創(chuàng)建一個新的對象繼承構(gòu)造函數(shù)的屬性。

1. 函數(shù)定義
- 函數(shù)表達式:函數(shù)名稱可有可無。若有函數(shù)名,則在函數(shù)體內(nèi)指代該函數(shù)本身,并且只存在于函數(shù)體中。函數(shù)名稱 === arguments.callee
- 函數(shù)聲明:存在函數(shù)提升。變量只提升變量并不提升賦值,函數(shù)提升整個函數(shù)體都會提升,因此可在聲明前調(diào)用函數(shù)。不能存在于循環(huán)。條件判斷、try/cache、with等語句中。在ES6中可以。
- 構(gòu)造函數(shù):使用`new Function()`若傳入一個參數(shù)則這個參數(shù)為函數(shù)體,傳入多個參數(shù)則前面的都是函數(shù)實參,最后一個參數(shù)為函數(shù)體。在函數(shù)創(chuàng)建時解析,效率比前兩種慢。運行的時候只能訪問自己的本地變量和全局變量,不能訪問Function構(gòu)造器被調(diào)用生成的上下文的作用域。在全局作用域中創(chuàng)建執(zhí)行。
2. 函數(shù)調(diào)用 2.1 函數(shù)調(diào)用
- 參數(shù):計算參數(shù)表達式的值作為函數(shù)的實參傳遞給聲明時的形參;
- 返回值:(1)在執(zhí)行到return語句時返回,返回值為return之后的值。(2)若return后無值或者函數(shù)沒有return語句(執(zhí)行到函數(shù)末尾)則返回undefined.
- 調(diào)用上下文(this):非嚴格模式下是全局對象(window),嚴格模式下是undefined.
2.2 方法調(diào)用
如果函數(shù)表達式是作為**對象的屬性調(diào)用**,則為方法調(diào)用。
- 參數(shù):與普通函數(shù)相同。
- 返回值:與普通函數(shù)相同。
- 調(diào)用上下文(this):調(diào)用該方法的對象就是調(diào)用上下文。實質(zhì)是給函數(shù)傳入隱式的實參——調(diào)用該方法的對象。
- 方法鏈:如果方法的返回值是一個對象,則返回的對象還可以再調(diào)用它的方法形成方法鏈。**當方法不需要返回值時,最好之間返回this形成方法鏈。**
- `this`是關(guān)鍵字,沒有作用域的限制。如果嵌套函數(shù)作為方法調(diào)用,則this指向調(diào)用它的對象。如果嵌套函數(shù)作為普通函數(shù)調(diào)用,則this指向全局對象或者undefined.
2.3 構(gòu)造函數(shù)調(diào)用
在函數(shù)或者方法調(diào)用之前使用關(guān)鍵字new,則為構(gòu)造函數(shù)調(diào)用。創(chuàng)建一個新的對象,繼承構(gòu)造函數(shù)的prototype屬性。
- 參數(shù):與普通函數(shù)相同。作為初始化對象的參數(shù)。
- 返回值:如果return語句返回一個對象,則這個對象為返回值。如果return沒有返回值或者返回原始值,則這個新創(chuàng)建的對象作為返回值。
- 調(diào)用上下文(this):新創(chuàng)建的對象。
2.4 間接調(diào)用
使用`call()`,`apply()`方法顯示制定調(diào)用所需的this值,使任何函數(shù)可以作為任何對象的方法調(diào)用。
3. 函數(shù)的實參和形參
- 形參:函數(shù)中定義的變量
- 實參:運行時的函數(shù)調(diào)用傳入的參數(shù)
當實參個數(shù) < 形參個數(shù)時,剩下的形參的值為undefined.因此,可給形參設置默認值,當傳入的值為undefined時,形參就使用默認值。
- 實參對象:`arguments`指向?qū)崊ο蟮囊?,是一個類數(shù)組對象,可通過數(shù)字下標訪問傳入的實參值,**該對象只在函數(shù)內(nèi)部有效**。arguments[]應用場景是函數(shù)需要固定個數(shù)的命名必須參數(shù)和不定數(shù)的可選實參。`arguments`有兩個屬性:length和callee.length屬性表示傳入函數(shù)的實參的個數(shù),callee指向當前執(zhí)行的函數(shù)。
- 當參數(shù)過多時,可以使用對象的屬性作為參數(shù)。解決參數(shù)順序的問題。
4. 閉包
- 閉包:函數(shù)**對象**可以**通過作用域鏈相互關(guān)聯(lián)起來**,函數(shù)體內(nèi)部的變量都可以保存在函數(shù)作用域內(nèi)。
- 函數(shù)的作用域鏈是在**函數(shù)定義**的時候創(chuàng)建的,并且在函數(shù)執(zhí)行時依然有效。作用域鏈是一個對象列表或者鏈表,這組對象定義了這段代碼“作用域"中的變量。對于不存在嵌套函數(shù)的函數(shù)體內(nèi),作用域上有兩個對象:一是定義函數(shù)參數(shù)和局部變量的對象,二是全局對象。當函數(shù)返回時,從作用域鏈中將這個綁定變量的對象刪除,如果沒有其他引用指向這個綁定對象,則這個對象會被當做垃圾回收掉。但是在存在嵌套函數(shù)中,嵌套函數(shù)有自己的作用域鏈,并且這個作用域鏈指向一個變量綁定對象。因此,當外部函數(shù)將嵌套函數(shù)作為返回或者存儲在某處的屬性里時,就有外部引用指向嵌套函數(shù),嵌套函數(shù)指向外部函數(shù)的變量對象,因此這個變量對象就不會被回收,還能訪問。主要用于私有變量和私有方法。
5. 函數(shù)的屬性和方法 5.1 函數(shù)的屬性
- length屬性:表示函數(shù)的形參的個數(shù)。即函數(shù)希望傳入多少個參數(shù)。
- prototype:當將函數(shù)用作構(gòu)造函數(shù)的時候,新創(chuàng)建的對象會從原型對象上繼承屬性。
5.2 函數(shù)的方法
- `call()`,`apply()`:使任何函數(shù)可以作為任何對象的方法調(diào)用。第一個參數(shù)傳入調(diào)用上下文。對于`call()`來說第二個參數(shù)傳入函數(shù)調(diào)用需要的實參。對于`apply()`來說第二個參數(shù)傳入一個數(shù)組或者類數(shù)組對象,該數(shù)組包含函數(shù)調(diào)用的實參。
- `bind()`:創(chuàng)建一個新的函數(shù)。第一個參數(shù)傳入新函數(shù)的調(diào)用上下文,后面的參數(shù)是函數(shù)調(diào)用的參數(shù)依次使用。
6. 函數(shù)式編程
- 高階函數(shù):接受一個或多個函數(shù)作為參數(shù),并返回一個新函數(shù)。
- 不完全函數(shù):可參照`bind`的應用。
- 記憶函數(shù):使用私有變量作為緩存。

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

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

相關(guān)文章

  • 犀牛——CHAP10:正則表達式

    摘要:設計目的是為了讓在全局范圍內(nèi)有效。在正則表達式后部引用前面的子表達式。傳入分隔符或正則表達式。對象屬性以下屬性返回布爾值。是否包含修飾符以下不返回布爾值整個字符串下一次搜索開始的位置。返回布爾值,若匹配則返回。 1. 正則表達式語法 1.1 表示方法 - `//`字面量模式,`/表達式/修飾符` - 使用`new RegExp(字符串,修飾符 | 正則表達式)`構(gòu)造函數(shù)。 在ES5中,...

    JessYanCoding 評論0 收藏0
  • 犀牛——CHAP7:數(shù)組

    摘要:數(shù)組有以下特點無類型數(shù)組元素可以是任意元素。因此,當小于數(shù)組最大索引時,大于的數(shù)組元素會被刪除。原數(shù)組不會改變將數(shù)組元素轉(zhuǎn)換為字符串并連接在一起。默認將數(shù)組元素用,連接,傳入的參數(shù)即為連接符。 showImg(https://box.worktile.com/view/fcfcdf2c99b14edfb6768085955ae253?pid=4b0845b09ca94218a955f8...

    Alfred 評論0 收藏0
  • 如何循序漸進地學習Javascript

    摘要:如果在初學一門語言的時候第一想到的是問別人,是很難取得進步的。如果你真想學好,我有個大概的自學軌跡供你們參考。第一步,學習的編程。立即可以嘗試的實例,也可以讓的初學者馬上看到效果。讀懂別人的代碼是學習,而改進別人的代碼則是創(chuàng)造了。 javascript入門太容易了,導致幾乎人人隨便看看就能上手,零基礎的人學個三五天都能對外宣稱自己掌握了js??墒钦嬲莆誮s是一件很難的事情。如果在初學...

    DTeam 評論0 收藏0
  • 犀牛——CHAP6:對象

    摘要:對象是屬性的無序集合。使用對象直接量創(chuàng)建的對象的原型就是,使用運算符創(chuàng)建的對象的原型是構(gòu)造函數(shù)的的值。主要目的是將對象鎖定,避免外界干擾。判斷對象是否封閉。刪除屬性可刪除對象的自有屬性且為的屬性。 對象是屬性的無序集合。因此,這一章主要從對象和屬性兩個方面來闡述。showImg(https://box.worktile.com/view/c8f5f376fe314aeca69d9b4c...

    philadelphia 評論0 收藏0
  • 如果想成為一名頂尖的前端,這份單你一定要收藏!

    摘要:其中負載均衡那一節(jié),基本上是參考的權(quán)威指南負載均衡的內(nèi)容。開發(fā)指南讀了一半,就是看這本書理解了的事件循環(huán)。哈哈創(chuàng)京東一本騙錢的書。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實踐干貨哦~ 本文由騰訊IVWEB團隊 發(fā)表于云+社區(qū)專欄作者:link 2014年一月以來,自己接觸web前端開發(fā)已經(jīng)兩年多了,記錄一下自己前端學習路上看過的,以及道聽途說的一些書,基本上按照由淺入深來介紹...

    callmewhy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<