js 是單執行緒還是多執行緒

2022-06-21 02:24:09 字數 1125 閱讀 1533

1、js 是單執行緒還是多執行緒?

單執行緒,單位時間內只能處理乙個程序,所以會有執行緒阻塞問題(使用**函式解決)或者非同步同步問題

2、let 和 var 宣告變數的區別?

1、作用域bai不一樣,var是函式作用域,而let是塊作用域,也就是說,在函式內宣告了var,整個函式內都是有效的,比如說在for迴圈內定義了乙個var變數,實際上其在for迴圈以外也是可以訪問的,而let由於是塊作用域,所以如果在塊作用域內(比如說for迴圈內)定義的變數,在其外面是不可被訪問的,所以let用在for (let i; i < n; i++)是一種很推薦的寫法

2、 let不能在定義之前訪問該變數,但是var是可以得。也就是說,let必須是先定義,再使用,而var先使用後宣告也行,只不過直接使用但是沒有卻沒有定義的時候,其值為undefined,實際上var有乙個變數提公升的過程。也就是說,當這個函式的作用域被建立的時候,實際上var定義的變數都會被建立,並且如果此時沒有初始化的話,則缺省會初始化乙個undefined。

3. let不能被重新定義,但是var是可以的。

3、說說 async/await 的使用方式和場景

async 是用來修飾函式的宣告, 使用async 修飾的函式會變成乙個非同步函式. await 用來修飾函式的呼叫, 被 await 修飾的函式必須返回乙個promise 非同步物件, 使用 await 修飾後, 就會將 promise 非同步物件轉換成乙個同步操作。

4、談談對 promise 的理解

1、promise 是乙個建構函式,我們可以通過該建構函式來生成promise的例項。

2、promise 即承諾,後續必要兌現,一旦兌現則不可更改!其狀態有三:pending(等待)、resolved(成功)、rejected(失敗)。

3、promise 是對**函式的一種封裝,是對非同步程式設計的一種改進(傳統解決非同步程式設計的方式是通過**函式,而**巢狀過多會導致**地獄(callbackhell)),我們可以通過promise將自己的程式以同步的方式表達出來,從而可以解決**臃腫及可讀性差的問題。

5、箭頭函式有什麼作用和實際應用場景?

Redis是多執行緒還是單執行緒?

沒錯,大家所熟知的 redis 確實是單執行緒模型,指的是執行 redis 命令的核心模組是單執行緒的,而不是整個 redis 例項就乙個執行緒,redis 其他模組還有各自模組的執行緒的。下面這個解釋比較好 一般來說 redis 的瓶頸並不在 cpu,而在記憶體和網路。如果要使用 cpu 多核,可...

Redis是單執行緒還是多執行緒

準確一點來講,既不是單執行緒,也不是多執行緒。io執行緒 記憶體處理執行緒 服務端和客戶端建立 socket 連線,並分配處理執行緒 首先,主線程負責接收建立連線請求。當有客戶端請求和例項建立 socket 連線時,主線程會建立和客戶端的連線,並把 socket 放入全域性等待佇列中。緊接著,主線程...

php是單執行緒還是多執行緒

php 從設計之初到流行起來都沒有出現明顯需要用多執行緒才能解決的需求。多執行緒並不總是比單執行緒優,多執行緒可能會引入其他問題 例如 兩個執行緒同時呼叫乙個類裡的同乙個方法時,可能出現死鎖的情況 你可以這樣理解對應乙個客戶的乙個頁面請求處理的php 是單執行緒處理的,這樣一來就可以自上而下的去編輯...