單線程
進(jìn)程
-
cpu
資源分配的最小單位 - 一個(gè)進(jìn)程可以有多個(gè)線程
線程
-
cpu
調(diào)度的最小單位 - 線程建立在進(jìn)程的建立基礎(chǔ)上的一次程序的運(yùn)行單位
線程分為:單線程 多線程
- 單線程:js是單線程 (同一個(gè)時(shí)間只能完成一個(gè)任務(wù))
- 多線程:百度是多線程
同步
- 同步任務(wù)是指在主線程上排隊(duì)的任務(wù),只有當(dāng)前一個(gè)任務(wù)執(zhí)行完畢,才能執(zhí)行下一個(gè)任務(wù)。需要等待的
異步
- 異步任務(wù)不進(jìn)入主線程,會(huì)進(jìn)入任務(wù)隊(duì)列,任務(wù)隊(duì)列通知主線程,某個(gè)異步任務(wù)可以執(zhí)行了,不需要等待
js
中的異步操作
1、定時(shí)器函數(shù)
-
1、回調(diào)函數(shù):匿名函數(shù)作為參數(shù)
-
2、
var 定時(shí)器名稱 = setTimeout(回調(diào)函數(shù),時(shí)間間隔)
-
隔一段時(shí)間之后再去執(zhí)行,只執(zhí)行一次
-
clearTimeout(定時(shí)器的名稱)
-
-
3、
var 定時(shí)器函數(shù) = setInterval(回調(diào)函數(shù),時(shí)間間隔)
-
每隔一段時(shí)間執(zhí)行一次
-
clearInterval(定時(shí)器的名稱)
-
-
綜合案例:
2、網(wǎng)絡(luò)請求(ajax,aixos,wx.request
)
3、文件的讀寫(node)
4、Promise
對象
5、generator
函數(shù)
6、await/async
函數(shù)
7、事件函數(shù)
預(yù)解析
- JavaScript引擎在對JavaScript代碼進(jìn)行解釋執(zhí)行之前,會(huì)對JavaScript代碼進(jìn)行預(yù)解析在預(yù)解析階段,會(huì)將以關(guān)鍵字var和function開頭的語句塊進(jìn)行解析
以下情況會(huì)發(fā)生預(yù)備解析
1、函數(shù)聲明的提升
2、變量的提升(只是聲明的提升,賦值不會(huì)提升)
3、函數(shù)聲明 函數(shù)名與變量聲明的變量名重復(fù),函數(shù)聲明提升,變量不提升
4、函數(shù)表達(dá)式不能提升
5、提升不會(huì)超出作用域的范圍
6、函數(shù)聲明,變量名重復(fù) 后面會(huì)覆蓋
-
后面會(huì)覆蓋前面的
域解析案例:
- 案例1:
- 案例2:
作用域
全局作用域
1、范圍:直接編寫在script標(biāo)簽之中的js
代碼,或者編寫在外部的js
文件中的js
代碼
2、全局變量:在全局作用域中定義的變量。在任何作用域內(nèi)都起作用
3、生命周期:瀏覽器打開時(shí)創(chuàng)建,關(guān)閉時(shí)銷毀
4、所有的全局變量都是window對象的屬性,所有的全局變量都是window對象的方法
局部作用域()
1、范圍:有且只有函數(shù)才能產(chǎn)生局部作用域
2、局部變量:在局部作用域內(nèi)定義的變量。只有在當(dāng)前局部作用域內(nèi)有效
3、生命周期:函數(shù)調(diào)用時(shí)創(chuàng)建,調(diào)用完成后立即銷毀
隱式全局變量
1、在函數(shù)中沒有var聲明
2、在函數(shù)中沒有用var聲明,且用分號隔開
3、在函數(shù)中沒有用var聲明,且用=號隔開
作用域鏈的查找規(guī)則
- 先從當(dāng)前的作用域內(nèi)查找,如果有就返回如果沒有就向上一級作用域內(nèi)朝找,直到全局作用域,如果全局還沒有,直接報(bào)錯(cuò)
對象
什么是對象?
- 世間萬物皆為對象
- 電腦:
- 特征:顏色、價(jià)格、尺寸… 對象的屬性
- 行為:敲代碼、玩游戲、看視頻… 對象的方法
js中的對象
- 現(xiàn)實(shí)實(shí)物的一個(gè)抽象
- 對象是無序?qū)傩缘募希▽傩悦貜?fù)會(huì)發(fā)生覆蓋)
創(chuàng)建對象的方式(四種)
1、字面量創(chuàng)建
2、new Object()
3、工廠模式
4、構(gòu)造函數(shù)
對象屬性值的獲取和對象方法的調(diào)用
- 對象.屬性
- 對象.方法()
構(gòu)造函數(shù)
- 1、函數(shù)
- 2、模板
- 3、函數(shù)的首字母一般大寫
new關(guān)鍵字的作用:
- 1、創(chuàng)建新對象===實(shí)例化對象
- 2、可以讓構(gòu)造函數(shù)中的this指向?qū)嵗瘜ο?/li>
函數(shù)中this的指向問題:
1、在構(gòu)造函數(shù)中this指向?qū)嵗瘜ο?/h4>
2、在自定義對象的函數(shù)(方法)中指向this指向當(dāng)前的對象
3、在普通函數(shù)中this指向window
文章來源:http://www.zghlxwxcb.cn/news/detail-816042.html
對象的遍歷
- for in 循環(huán)
- for(x in obj){
x是對象的屬性名
obj[x]是對象的屬性值(不可以用 . )
}
對象添加變量名
- 對象[屬性名] = “屬性值”
文章來源地址http://www.zghlxwxcb.cn/news/detail-816042.html
到了這里,關(guān)于單線程、同步、異步、預(yù)解析、作用域、隱式全局變量、對象創(chuàng)建、new的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!