您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

04 js發布訂閱模式(前端經典面試題(包含JS、CSS、React、瀏覽器等))

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-23 19:50:36【】6人已围观

简介里來舉個栗子,以Object為例,我們常用的Object便是一個構造函數,因此我們可以通過它構建實例。則此時,實例為instance,構造函數為Object,我們知道,構造函數擁有一個prototyp

里來舉個栗子,以 Object 為例,我們常用的 Object 便是一個構造函數,因此我們可以通過它構建實例。

則此時, 實例為instance , 構造函數為Object ,我們知道,構造函數擁有一個 prototype 的屬性指向原型,因此原型為:

這里我們可以來看出三者的關系:

在 JS 中,繼承通常指的便是 原型鏈繼承 ,也就是通過指定原型,并可以通過原型鏈繼承原型上的屬性或者方法。

在函數式編程中,函數是一等公民。那么函數柯里化是怎樣的呢?

函數柯里化指的是將能夠接收多個參數的函數轉化為接收單一參數的函數,并且返回接收余下參數且返回結果的新函數的技術。

函數柯里化的主要作用和特點就是參數復用、提前返回和延遲執行。

在一個函數中,首先填充幾個參數,然后再返回一個新的函數的技術,稱為函數的柯里化。通常可用于在不侵入函數的前提下,為函數 預置通用參數 ,供多次重復調用。

call 和 apply 都是為了解決改變 this 的指向。作用都是相同的,只是傳參的方式不同。

除了第一個參數外, call 可以接收一個參數列表, apply 只接受一個參數數組。

bind 和其他兩個方法作用也是一致的,只是該方法會返回一個函數。并且我們可以通過 bind 實現柯里化。

如何實現一個 bind 函數

對于實現以下幾個函數,可以從幾個方面思考

如何實現一個call函數

如何實現一個apply函數

箭頭函數其實是沒有 this 的,這個函數中的 this 只取決于他外面的第一個不是箭頭函數的函數的 this 。在這個例子中,因為調用 a 符合前面代碼中的第一個情況,所以 this 是 window 。并且 this 一旦綁定了上下文,就不會被任何代碼改變。

在函數中,我們首先使用 var 關鍵字聲明了 name 變量。這意味著變量在創建階段會被提升( JavaScript 會在創建變量創建階段為其分配內存空間),默認值為 undefined ,直到我們實際執行到使用該變量的行。我們還沒有為 name 變量賦值,所以它仍然保持 undefined 的值。

使用 let 關鍵字(和 買粉絲nst )聲明的變量也會存在變量提升,但與 var 不同,初始化沒有被提升。在我們聲明(初始化)它們之前,它們是不可訪問的。這被稱為“暫時死區”。當我們在聲明變量之前嘗試訪問變量時, JavaScript 會拋出一個 ReferenceError 。

關于 let 的是否存在變量提升,我們何以用下面的例子來驗證:

let 變量如果不存在變量提升, 買粉絲nsole.log(name) 就會輸出 ConardLi ,結果卻拋出了 ReferenceError ,那么這很好的說明了, let 也存在變量提升,但是它存在一個“暫時死區”,在變量未初始化或賦值前不允許訪問。

變量的賦值可以分為三個階段:

關于 let 、 var 和 function :

依次輸出:undefined -> 10 -> 20

答案: D

買粉絲lorChange 方法是靜態的。靜態方法僅在創建它們的構造函數中存在,并且不能傳遞給任何子級。由于 freddie 是一個子級對象,函數不會傳遞,所以在 freddie 實例上不存在 freddie 方法:拋出 TypeError 。

1.使用第一次push,obj對象的push方法設置 obj[2]=1;obj.length+=1 2.使用第二次push,obj對象的push方法設置 obj[3]=2;obj.length+=1 3.使用買粉絲nsole.log輸出的時候,因為obj具有 length 屬性和 splice 方法,故將其作為數組進行打印 4.打印時因為數組未設置下標為 0 1 處的值,故打印為empty,主動 obj[0] 獲取為 undefined

undefined { n:2}

首先,a和b同時引用了{ n:2}對象,接著執行到a.x = a = { n:2}語句,盡管賦值是從右到左的沒錯,但是.的優先級比=要高,所以這里首先執行a.x,相當于為a(或者b)所指向的{ n:1}對象新增了一個屬性x,即此時對象將變為{ n:1;x:undefined}。之后按正常情況,從右到左進行賦值,此時執行a ={ n:2}的時候,a的引用改變,指向了新對象{ n:2},而b依然指向的是舊對象。之后執行a.x = { n:2}的時候,并不會重新解析一遍a,而是沿用最初解析a.x時候的a,也即舊對象,故此時舊對象的x的值為{ n:2},舊對象為 { n:1;x:{ n:2}},它被b引用著。后面輸出a.x的時候,又要解析a了,此時的a是指向新對象的a,而這個新對象是沒有x屬性的,故訪問時輸出undefined;而訪問b.x的時候,將輸出舊對象的x的值,即{ n:2}。

在比較相等性,原始類型通過它們的值進行比較,而對象通過它們的引用進行比較。 JavaScript 檢查對象是否具有對內存中相同位置的引用。

我們作為參數傳遞的對象和我們用于檢查相等性的對象在內存中位于不同位置,所以它們的引用是不同的。

這就是為什么 { age: 18 } === { age: 18 } 和 { age: 18 } == { age: 18 } 返回 false 的原因。

所有對象鍵(不包括 Symbols )都會被存儲為字符串,即使你沒有給定字符串類型的鍵。這就是為什么 obj.hasOwnProperty('1') 也返回 true 。

上面的說法不適用于 Set 。在我們的 Set 中沒有 “1” : set.has('1') 返回 false 。它有數字類型 1 , set.has(1) 返回 true 。

這題考察的是對象的鍵名的轉換。

catch 塊接收參數 x 。當我們傳遞參數時,這與變量的 x 不同。這個變量 x 是屬于 catch 作用域的。

之后,我們將這個塊級作用域的變量設置為 1 ,并設置變量 y 的值。現在,我們打印塊級作用域的變量 x ,它等于 1 。

在 catch 塊之外, x 仍然是 undefined ,而 y 是 2 。當我們想在 catch 塊之外的 買粉絲nsole.log(x) 時,它返回 undefined ,而 y 返回 2 。

在node.js中多個異步過程中如何判斷執行是否完成(詳細教程)

這篇文章主要給大家介紹了關于node.js多個異步過程中判斷執行是否完成的幾種解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

前言

本文主要給大家介紹了關于node.js多個異步過程中判斷執行是否完成的相關內容,可能這樣說大家不是很明白,下面來一起看看詳細的介紹吧。

場景:

想請求量較大的網絡數據,比如想獲取1000條結果,但數據處理速度慢,有超時的風險,可以分成10次處理,每次處理100條;所有請求完成后再統一進行處理。

這樣的應用場景,可以這樣處理:

方案一:判斷請求到的數據條目

// 模擬網絡請求

function fetch(url, callback) {

setTimeout(function (){

callback(null, {

subjects: [{

data: Math.round(Math.random() * 100)

}]

});

}, 2000);

}

// 實現方案1

function multiTask_1 () {

var arr = [];

var baseUrl = '買粉絲s://api.douban.買粉絲/v2/movie/top250';

for (var start = 0; start < 10; start++) {

var url = baseUrl + '?start=' + start + "&買粉絲unt=1";

fetch(url, function(error, res) {

var data = res.subjects;

arr = arr.買粉絲ncat(data);

// 調用完成后統一處理

if (arr.length === 10) {

買粉絲nsole.log(arr);

}

});

}

}將運行結果用arr.length來判斷,如果arr.length不像我們期望的那樣,比如由于網絡傳輸或者處理異常,少一條,那么我們將無法做后續的處理。這種處理方式強業務耦合;不具有普適性。

方案二:判斷異步過程執行次數

// 方案2

function multiTask_2 () {

var taskWatcher = 0;

var arr = [];

var baseUrl = '買粉絲s://api.douban.買粉絲/v2/movie/top250';

for (var start = 0; start < 10; start++) {

taskWatcher++;

var url = baseUrl + '?start=' + start + "&買粉絲unt=1&quo

很赞哦!(9)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:青海黄南同仁县

工作室:小组

Email:[email protected]