* 預(yù)解釋

* 預(yù)解釋

* 什么是預(yù)解釋

* 關(guān)于預(yù)解釋: 帶var和帶function不同

* 函數(shù)執(zhí)行四階段

* 作用域鏈

* 預(yù)解釋無(wú)節(jié)操

* 閉包

* 運(yùn)算符

* 棧內(nèi)存和堆內(nèi)存

* 堆內(nèi)存和棧內(nèi)存 的銷(xiāo)毀

* this的總結(jié)

* ||或者 &&并且

預(yù)解釋

什么是預(yù)解釋

變量:

1.聲明一個(gè)變量 var ? ? ? var 變量名 = 變量值;

2.= ?賦值:將等號(hào)右邊的變量值賦值給等號(hào)左邊的變量名

3.變量的作用:存儲(chǔ)值和代表值的

1:什么是預(yù)解釋

在當(dāng)前作用域下,在JS代碼執(zhí)行之前,瀏覽器會(huì)對(duì)帶var和帶function的進(jìn)行提前聲明或定義

關(guān)于預(yù)解釋: 帶var和帶function不同

1:帶var和帶function不同

1)帶var 只聲明,不定義 var a;告訴瀏覽器有個(gè)變量叫做a,關(guān)于a的內(nèi)容不知道

2)帶function 聲明加定義 ?var fn=xxxfff

2:帶var和不帶var的區(qū)別:

1 帶var: ? 1) 在全局環(huán)境下,屬于window的全局屬性 2)帶var會(huì)進(jìn)行預(yù)解釋

2 不帶var: ?1)屬于window的全局屬性 2)不帶var不會(huì)進(jìn)行預(yù)解釋?zhuān)?/p>

3:私有變量有2種:

1)當(dāng)前作用域下,帶var的; ? ? ? ? ? 2)形參;

函數(shù)執(zhí)行四階段

1)形成一個(gè)私有作用域

2)形參賦值

3)預(yù)解釋

4)代碼從上到下執(zhí)行

4:函數(shù)返回值出現(xiàn)undefined的情況有兩種

1)沒(méi)有寫(xiě)return

2)寫(xiě)了return但是沒(méi)賦值

作用域鏈

作用域鏈

當(dāng)函數(shù)被調(diào)用的時(shí)候,會(huì)形成一個(gè)私有作用域,我們看該私有作用域下,是否有私有變量A

1)如果有私有變量A,那么該作用域中的A,都是私有變量跟外界沒(méi)有任何關(guān)系

2)如果沒(méi)有私有變量A,到上級(jí)作用域查找,如果沒(méi)有繼續(xù)往上找,找到window還沒(méi)有的話(huà),報(bào)錯(cuò)

預(yù)解釋無(wú)節(jié)操

預(yù)解釋無(wú)節(jié)操

1)只對(duì)等號(hào)左邊帶var的,聲明但是不定義

2)已經(jīng)聲明過(guò)的,不會(huì)重復(fù)聲明,但是重新賦值

3)在預(yù)解釋階段,函數(shù)的優(yōu)先級(jí)大于變量

4)條件判斷語(yǔ)句中,無(wú)論條件是否成立,都會(huì)進(jìn)行預(yù)解釋 ?(注意:條件為真,執(zhí)行代碼,條件不成立,輸出的是全局變量)

5)return 后面的語(yǔ)句不會(huì)進(jìn)行預(yù)解釋 ,return下面的語(yǔ)句,雖然不執(zhí)行,但是會(huì)進(jìn)行預(yù)解釋

6)匿名函數(shù)不進(jìn)行預(yù)解釋

7)自執(zhí)行函數(shù)不會(huì)進(jìn)行預(yù)解釋?zhuān)挥袌?zhí)行到他的時(shí)候,聲明+定義+調(diào)用 同步完成

(function (n){ 形參

自執(zhí)行函數(shù)只執(zhí)行一次,傳參一次 ,自執(zhí)行函數(shù)也是匿名函數(shù)

return function(){

}

})(i)實(shí)參

obj.fn(); ? ? ? ?obj.fn執(zhí)行的是return后面函數(shù)

執(zhí)行的是return后面的函數(shù)

閉包

閉包

函數(shù)形成一個(gè)新的私有作用域保護(hù)里面的私有變量不受外界的干擾(外界修改不了私有的,私有的也修改不了外面的),這種保護(hù)機(jī)制叫做閉包

運(yùn)算符

運(yùn)算符

1)+ ?兩邊遇到字符串--》字符串拼接

1+'zfpx' ?"1zfpx"

2)- * / 如果計(jì)算不成功--》NaN

1-'zfpx' ?NaN

運(yùn)算符的優(yōu)先級(jí)

1圓括號(hào)

2算數(shù)運(yùn)算符

3邏輯與&&>邏輯或||

4比較運(yùn)算符 == != === ?!==

5;三元運(yùn)算符

6;賦值操作

運(yùn)算符的優(yōu)先級(jí)

算數(shù)運(yùn)算符 大于 比較運(yùn)算符 大于 邏輯 大于 賦值

棧內(nèi)存和堆內(nèi)存

棧內(nèi)存和堆內(nèi)存

棧內(nèi)存: 提供一個(gè)供JS代碼執(zhí)行的環(huán)境(里面可以放輕量級(jí)的數(shù)據(jù);基本數(shù)據(jù)類(lèi)型)

棧內(nèi)存有全局作用域 和私有作用域

堆內(nèi)存:存放引用數(shù)據(jù)類(lèi)型

對(duì)象數(shù)據(jù)類(lèi)型:鍵值對(duì)

函數(shù)數(shù)據(jù)類(lèi)型:代碼字符串

堆內(nèi)存和棧內(nèi)存 的銷(xiāo)毀

堆內(nèi)存和棧內(nèi)存 的銷(xiāo)毀

1) 堆內(nèi)存;讓占用內(nèi)存地址的變量,指向ary=null; var=[1,3]

2)棧內(nèi)存;全局作用域和私有作用域

在瀏覽器加載完html頁(yè)面的時(shí)候,全局作用域就形成了;

全局作用域銷(xiāo)毀;關(guān)閉瀏覽器,關(guān)閉當(dāng)前頁(yè)面

3)私有作用域

銷(xiāo)毀:在一般情況下,當(dāng)函數(shù)執(zhí)行完成的時(shí)候,默認(rèn)會(huì)進(jìn)行銷(xiāo)毀,有兩種特殊情況不銷(xiāo)毀

1)不銷(xiāo)毀:當(dāng)函數(shù)體內(nèi)有東西被外面的變量或其他占用的時(shí)候,該函數(shù)不銷(xiāo)毀

2)不立即銷(xiāo)毀 :當(dāng)函數(shù)執(zhí)行完成的時(shí)候,會(huì)返回一個(gè)函數(shù)的定義階段,這個(gè)返回的函數(shù)還需要再次調(diào)用,只有等所有的函數(shù)都調(diào)用完成,這個(gè)大函數(shù)才能銷(xiāo)毀

this的總結(jié)

this的總結(jié)

1)當(dāng)元素身上的事件被觸發(fā)的時(shí)候,會(huì)執(zhí)行一個(gè)函數(shù),函數(shù)中的this;指向當(dāng)前這個(gè)元素

2)函數(shù)被調(diào)用的時(shí)候,看前面是否有..點(diǎn)前面是誰(shuí),this就是誰(shuí)--沒(méi)點(diǎn)就是window

3)自執(zhí)行函數(shù)中的this,永遠(yuǎn)都是window ?定時(shí)器種的this一般默認(rèn)為window (自執(zhí)行函數(shù)就是匿名函數(shù))

4)回調(diào)函數(shù)中的this一般默認(rèn)為window

5)構(gòu)造函數(shù)中的this 永遠(yuǎn)是實(shí)例

6)當(dāng)遇到apply,bind,call的時(shí)候,以上統(tǒng)統(tǒng)失效

||或者 &&并且

12:||或者 &&并且

|| ?或者 只要有一個(gè)真 整體即為真

&& 并且 兩邊的小條件都為真,整體即為真

先算且&& ?再算或||

- 1.且和或的用法:

+ &&:前面為真,才會(huì)走后面;

+ cb && cb();

+ ||:前面為假,才會(huì)走后面;

+ var l=left||200;

+ ?&&如果兩邊為具體的值:(為假的值:0 '' null NaN undefined)

如果第一個(gè)為真 返回第二個(gè)

如果第一個(gè)為假 返回第一個(gè)

+ ?||如果兩邊為具體的值:(為假的值:0 '' null NaN undefined)

如果第一個(gè)為真 返回第一個(gè)

如果第一個(gè)為假 返回第二個(gè)

+ && ||如果兩邊為條件 ?返回false 或者true

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在開(kāi)始之前先寫(xiě)一下js中的數(shù)據(jù)類(lèi)型. 基本數(shù)據(jù)類(lèi)型 number, boolen ,string ,null, u...
    Rapheal閱讀 917評(píng)論 0 0
  • 什么是預(yù)解釋?zhuān)涸诋?dāng)前作用域下,在JS代碼執(zhí)行之前,瀏覽器會(huì)對(duì)帶var和帶function的進(jìn)行提前聲明或定義; 帶...
    劉曉洋閱讀 331評(píng)論 0 1
  • 什么是javascript的預(yù)解釋?zhuān)?在當(dāng)前作用域下,JS代碼執(zhí)行之前,瀏覽器會(huì)對(duì)帶var的和function的進(jìn)...
    知識(shí)搬運(yùn)工horace閱讀 421評(píng)論 0 0
  • 作用域鏈:當(dāng)函數(shù)被調(diào)用的時(shí)候,會(huì)形成一個(gè)私有作用域,看私有作用域中,是否存在私有變量A:1)如果有私有變量A:那么...
    知識(shí)搬運(yùn)工horace閱讀 559評(píng)論 1 2
  • 為什么要學(xué)預(yù)解釋?zhuān)?不知道應(yīng)該把函數(shù)或變量定義在哪里 不知道為何條件判斷中寫(xiě)函數(shù)定義階段,會(huì)執(zhí)行錯(cuò)誤的結(jié)果 同一段...
    Dream_丹丹閱讀 325評(píng)論 0 0

友情鏈接更多精彩內(nèi)容