摘要:若有函數(shù)名,則在函數(shù)體內(nèi)指代該函數(shù)本身,并且只存在于函數(shù)體中。返回值與普通函數(shù)相同。如果嵌套函數(shù)作為普通函數(shù)調(diào)用,則指向全局對(duì)象或者構(gòu)造函數(shù)調(diào)用在函數(shù)或者方法調(diào)用之前使用關(guān)鍵字,則為構(gòu)造函數(shù)調(diào)用。創(chuàng)建一個(gè)新的對(duì)象繼承構(gòu)造函數(shù)的屬性。
1. 函數(shù)定義
- 函數(shù)表達(dá)式:函數(shù)名稱可有可無(wú)。若有函數(shù)名,則在函數(shù)體內(nèi)指代該函數(shù)本身,并且只存在于函數(shù)體中。函數(shù)名稱 === arguments.callee - 函數(shù)聲明:存在函數(shù)提升。變量只提升變量并不提升賦值,函數(shù)提升整個(gè)函數(shù)體都會(huì)提升,因此可在聲明前調(diào)用函數(shù)。不能存在于循環(huán)。條件判斷、try/cache、with等語(yǔ)句中。在ES6中可以。 - 構(gòu)造函數(shù):使用`new Function()`若傳入一個(gè)參數(shù)則這個(gè)參數(shù)為函數(shù)體,傳入多個(gè)參數(shù)則前面的都是函數(shù)實(shí)參,最后一個(gè)參數(shù)為函數(shù)體。在函數(shù)創(chuàng)建時(shí)解析,效率比前兩種慢。運(yùn)行的時(shí)候只能訪問(wèn)自己的本地變量和全局變量,不能訪問(wèn)Function構(gòu)造器被調(diào)用生成的上下文的作用域。在全局作用域中創(chuàng)建執(zhí)行。2. 函數(shù)調(diào)用 2.1 函數(shù)調(diào)用
- 參數(shù):計(jì)算參數(shù)表達(dá)式的值作為函數(shù)的實(shí)參傳遞給聲明時(shí)的形參; - 返回值:(1)在執(zhí)行到return語(yǔ)句時(shí)返回,返回值為return之后的值。(2)若return后無(wú)值或者函數(shù)沒(méi)有return語(yǔ)句(執(zhí)行到函數(shù)末尾)則返回undefined. - 調(diào)用上下文(this):非嚴(yán)格模式下是全局對(duì)象(window),嚴(yán)格模式下是undefined.2.2 方法調(diào)用
如果函數(shù)表達(dá)式是作為**對(duì)象的屬性調(diào)用**,則為方法調(diào)用。 - 參數(shù):與普通函數(shù)相同。 - 返回值:與普通函數(shù)相同。 - 調(diào)用上下文(this):調(diào)用該方法的對(duì)象就是調(diào)用上下文。實(shí)質(zhì)是給函數(shù)傳入隱式的實(shí)參——調(diào)用該方法的對(duì)象。 - 方法鏈:如果方法的返回值是一個(gè)對(duì)象,則返回的對(duì)象還可以再調(diào)用它的方法形成方法鏈。**當(dāng)方法不需要返回值時(shí),最好之間返回this形成方法鏈。** - `this`是關(guān)鍵字,沒(méi)有作用域的限制。如果嵌套函數(shù)作為方法調(diào)用,則this指向調(diào)用它的對(duì)象。如果嵌套函數(shù)作為普通函數(shù)調(diào)用,則this指向全局對(duì)象或者undefined.2.3 構(gòu)造函數(shù)調(diào)用
在函數(shù)或者方法調(diào)用之前使用關(guān)鍵字new,則為構(gòu)造函數(shù)調(diào)用。創(chuàng)建一個(gè)新的對(duì)象,繼承構(gòu)造函數(shù)的prototype屬性。 - 參數(shù):與普通函數(shù)相同。作為初始化對(duì)象的參數(shù)。 - 返回值:如果return語(yǔ)句返回一個(gè)對(duì)象,則這個(gè)對(duì)象為返回值。如果return沒(méi)有返回值或者返回原始值,則這個(gè)新創(chuàng)建的對(duì)象作為返回值。 - 調(diào)用上下文(this):新創(chuàng)建的對(duì)象。2.4 間接調(diào)用
使用`call()`,`apply()`方法顯示制定調(diào)用所需的this值,使任何函數(shù)可以作為任何對(duì)象的方法調(diào)用。3. 函數(shù)的實(shí)參和形參
- 形參:函數(shù)中定義的變量 - 實(shí)參:運(yùn)行時(shí)的函數(shù)調(diào)用傳入的參數(shù) 當(dāng)實(shí)參個(gè)數(shù) < 形參個(gè)數(shù)時(shí),剩下的形參的值為undefined.因此,可給形參設(shè)置默認(rèn)值,當(dāng)傳入的值為undefined時(shí),形參就使用默認(rèn)值。 - 實(shí)參對(duì)象:`arguments`指向?qū)崊?duì)象的引用,是一個(gè)類數(shù)組對(duì)象,可通過(guò)數(shù)字下標(biāo)訪問(wèn)傳入的實(shí)參值,**該對(duì)象只在函數(shù)內(nèi)部有效**。arguments[]應(yīng)用場(chǎng)景是函數(shù)需要固定個(gè)數(shù)的命名必須參數(shù)和不定數(shù)的可選實(shí)參。`arguments`有兩個(gè)屬性:length和callee.length屬性表示傳入函數(shù)的實(shí)參的個(gè)數(shù),callee指向當(dāng)前執(zhí)行的函數(shù)。 - 當(dāng)參數(shù)過(guò)多時(shí),可以使用對(duì)象的屬性作為參數(shù)。解決參數(shù)順序的問(wèn)題。4. 閉包
- 閉包:函數(shù)**對(duì)象**可以**通過(guò)作用域鏈相互關(guān)聯(lián)起來(lái)**,函數(shù)體內(nèi)部的變量都可以保存在函數(shù)作用域內(nèi)。 - 函數(shù)的作用域鏈?zhǔn)窃?*函數(shù)定義**的時(shí)候創(chuàng)建的,并且在函數(shù)執(zhí)行時(shí)依然有效。作用域鏈?zhǔn)且粋€(gè)對(duì)象列表或者鏈表,這組對(duì)象定義了這段代碼“作用域"中的變量。對(duì)于不存在嵌套函數(shù)的函數(shù)體內(nèi),作用域上有兩個(gè)對(duì)象:一是定義函數(shù)參數(shù)和局部變量的對(duì)象,二是全局對(duì)象。當(dāng)函數(shù)返回時(shí),從作用域鏈中將這個(gè)綁定變量的對(duì)象刪除,如果沒(méi)有其他引用指向這個(gè)綁定對(duì)象,則這個(gè)對(duì)象會(huì)被當(dāng)做垃圾回收掉。但是在存在嵌套函數(shù)中,嵌套函數(shù)有自己的作用域鏈,并且這個(gè)作用域鏈指向一個(gè)變量綁定對(duì)象。因此,當(dāng)外部函數(shù)將嵌套函數(shù)作為返回或者存儲(chǔ)在某處的屬性里時(shí),就有外部引用指向嵌套函數(shù),嵌套函數(shù)指向外部函數(shù)的變量對(duì)象,因此這個(gè)變量對(duì)象就不會(huì)被回收,還能訪問(wèn)。主要用于私有變量和私有方法。5. 函數(shù)的屬性和方法 5.1 函數(shù)的屬性
- length屬性:表示函數(shù)的形參的個(gè)數(shù)。即函數(shù)希望傳入多少個(gè)參數(shù)。 - prototype:當(dāng)將函數(shù)用作構(gòu)造函數(shù)的時(shí)候,新創(chuàng)建的對(duì)象會(huì)從原型對(duì)象上繼承屬性。5.2 函數(shù)的方法
- `call()`,`apply()`:使任何函數(shù)可以作為任何對(duì)象的方法調(diào)用。第一個(gè)參數(shù)傳入調(diào)用上下文。對(duì)于`call()`來(lái)說(shuō)第二個(gè)參數(shù)傳入函數(shù)調(diào)用需要的實(shí)參。對(duì)于`apply()`來(lái)說(shuō)第二個(gè)參數(shù)傳入一個(gè)數(shù)組或者類數(shù)組對(duì)象,該數(shù)組包含函數(shù)調(diào)用的實(shí)參。 - `bind()`:創(chuàng)建一個(gè)新的函數(shù)。第一個(gè)參數(shù)傳入新函數(shù)的調(diào)用上下文,后面的參數(shù)是函數(shù)調(diào)用的參數(shù)依次使用。6. 函數(shù)式編程
- 高階函數(shù):接受一個(gè)或多個(gè)函數(shù)作為參數(shù),并返回一個(gè)新函數(shù)。 - 不完全函數(shù):可參照`bind`的應(yīng)用。 - 記憶函數(shù):使用私有變量作為緩存。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79835.html
摘要:設(shè)計(jì)目的是為了讓在全局范圍內(nèi)有效。在正則表達(dá)式后部引用前面的子表達(dá)式。傳入分隔符或正則表達(dá)式。對(duì)象屬性以下屬性返回布爾值。是否包含修飾符以下不返回布爾值整個(gè)字符串下一次搜索開(kāi)始的位置。返回布爾值,若匹配則返回。 1. 正則表達(dá)式語(yǔ)法 1.1 表示方法 - `//`字面量模式,`/表達(dá)式/修飾符` - 使用`new RegExp(字符串,修飾符 | 正則表達(dá)式)`構(gòu)造函數(shù)。 在ES5中,...
摘要:數(shù)組有以下特點(diǎn)無(wú)類型數(shù)組元素可以是任意元素。因此,當(dāng)小于數(shù)組最大索引時(shí),大于的數(shù)組元素會(huì)被刪除。原數(shù)組不會(huì)改變將數(shù)組元素轉(zhuǎn)換為字符串并連接在一起。默認(rèn)將數(shù)組元素用,連接,傳入的參數(shù)即為連接符。 showImg(https://box.worktile.com/view/fcfcdf2c99b14edfb6768085955ae253?pid=4b0845b09ca94218a955f8...
摘要:如果在初學(xué)一門(mén)語(yǔ)言的時(shí)候第一想到的是問(wèn)別人,是很難取得進(jìn)步的。如果你真想學(xué)好,我有個(gè)大概的自學(xué)軌跡供你們參考。第一步,學(xué)習(xí)的編程。立即可以嘗試的實(shí)例,也可以讓的初學(xué)者馬上看到效果。讀懂別人的代碼是學(xué)習(xí),而改進(jìn)別人的代碼則是創(chuàng)造了。 javascript入門(mén)太容易了,導(dǎo)致幾乎人人隨便看看就能上手,零基礎(chǔ)的人學(xué)個(gè)三五天都能對(duì)外宣稱自己掌握了js??墒钦嬲莆誮s是一件很難的事情。如果在初學(xué)...
摘要:對(duì)象是屬性的無(wú)序集合。使用對(duì)象直接量創(chuàng)建的對(duì)象的原型就是,使用運(yùn)算符創(chuàng)建的對(duì)象的原型是構(gòu)造函數(shù)的的值。主要目的是將對(duì)象鎖定,避免外界干擾。判斷對(duì)象是否封閉。刪除屬性可刪除對(duì)象的自有屬性且為的屬性。 對(duì)象是屬性的無(wú)序集合。因此,這一章主要從對(duì)象和屬性兩個(gè)方面來(lái)闡述。showImg(https://box.worktile.com/view/c8f5f376fe314aeca69d9b4c...
摘要:其中負(fù)載均衡那一節(jié),基本上是參考的權(quán)威指南負(fù)載均衡的內(nèi)容。開(kāi)發(fā)指南讀了一半,就是看這本書(shū)理解了的事件循環(huán)。哈哈創(chuàng)京東一本騙錢(qián)的書(shū)。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由騰訊IVWEB團(tuán)隊(duì) 發(fā)表于云+社區(qū)專欄作者:link 2014年一月以來(lái),自己接觸web前端開(kāi)發(fā)已經(jīng)兩年多了,記錄一下自己前端學(xué)習(xí)路上看過(guò)的,以及道聽(tīng)途說(shuō)的一些書(shū),基本上按照由淺入深來(lái)介紹...
閱讀 3950·2021-11-16 11:50
閱讀 947·2021-11-11 16:55
閱讀 3671·2021-10-26 09:51
閱讀 872·2021-09-22 15:03
閱讀 3438·2019-08-30 15:54
閱讀 3272·2019-08-30 15:54
閱讀 2483·2019-08-30 14:04
閱讀 928·2019-08-30 13:53