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

資訊專欄INFORMATION COLUMN

犀牛書——CHAP8:函數

he_xd / 756人閱讀

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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79835.html

相關文章

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

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

    JessYanCoding 評論0 收藏0
  • 犀牛——CHAP7:數組

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

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

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

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

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

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

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

    callmewhy 評論0 收藏0

發表評論

0條評論

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