js試題整理

2021-09-26 08:39:39 字數 3189 閱讀 3897

洗牌:

function shuffle(arr) 

}

柯力化:

function add() ;

// 利用tostring隱式轉換的特性,當最後執行時隱式轉換,並計算最終的值返回

_adder.tostring = function () );

}return _adder;

}let s = add(1)(2)(3)

console.log(s)

相加:

function one(arg=0)

function two(arg=0)

function add(arg)

two(add(one()))

new實現:

// 第二版

function create() ;

bind實現:

// 第四版,已通過測試用例

function.prototype.bind2 = function (context) ;

var fbound = function ()

fnop.prototype = this.prototype;

fbound.prototype = new fnop();

return fbound;

}

function.prototype.call = function (context) 

context = context || window;

context.fn = this;

let result;

if (!arr) else

delete context.fn

return result;

}

promise.all:

all(list) 

}, err => )}})

}

finally:

promise.prototype.finally = function (callback) )

);};

race:

promise._race = promises => new promise((resolve, reject) => )

})

扁平化:

array.from(new set(arr.flat(infinity))).sort((a,b)=>)
array.prototype.flat= function()
function flatten(arr) 

return arr;

}

指定層級和獲取深度:

var arrs = [,[,[1,[1,[1]]]]], floor = 1, max = 1;

function deep(arr, floor)

if(item instanceof array)

})}deep(arrs,1)

console.log(max) //5

function flatten(arr,n=1)

return result

}function shallowflatten(arr)

flatten([1,[2,[3,[4]]]], n=1)

async\await

async function fn(args) 

// 等同於

function fn(args) );

}function spawn(genf) catch(e)

if(next.done)

promise.resolve(next.value).then(function(v) );

}, function(e) );

});}

step(function() );

});}

物件判斷:

export default function isplainobject(obj) 

return proto === baseproto

}

promise:promise

vuex原理補充:vuex原理補充

redux原理補充:redux原理補充

react-redux原理補充:react-redux原理補充

react+diff原理補充:react簡易實現

react-router原理:react-router原理

react fiber原理補充:原理分析

vue原理補充: vue原理補充

webpack熱更新原理補充: webpack熱更新原理補充

webpack**分割打包原理補充:webpack**分割打包原理補充

grahql補充:----------------

vue通訊:------------------

react-form:-----------------

diff原理:新增鏈結描述

事件合成機制新增鏈結描述

react setsate機制:

1.enqueuesetstate將state放入佇列中,並呼叫enqueueupdate處理要更新的component

2.如果元件當前正處於update事務中,則先將component存入dirtycomponent中。否則呼叫batchedupdates處理。

3.batchedupdates發起一次transaction.perform()事務

4.開始執行事務初始化,執行,結束三個階段

5.初始化:事務初始化階段沒有註冊方法,故無方法要執行

6.執行:執行setsate時傳入的callback方法,一般不會傳callback引數

8.flush_batched_updates在close階段,會迴圈遍歷所有的dirtycomponents,呼叫updatecomponent重新整理元件,並執行它的pendingcallbacks, 也就是setstate中設定的callback。

整理 js經典小面試題

var str abcoefoxyozzopp var index str.indexof o 宣告變數,並且進行第一次查詢 var sum 記錄位置 var i 0 記錄次數 while index 1 console.log sum,i 處 var str abcoefoxyozzopp var...

筆試題整理

n副撲克,張數為m,大小為1 m,每幅撲克抽一張,求和恰好為k的組合數,結果對10e9 7取餘數。思路 動態規劃。和為i,j副撲克,dp i j dp i 1 j 1 dp i m j 1 此處需要判斷 i m 0 初始化,j 1,i m,dp i j 1 i j,dp i j 1,後面的情況不可能...

js面試整理

1.判斷基本資料型別typeof 判斷物件的型別 object.prototype.tostring.call 使用 typeof bar object 判斷 bar 是不是乙個物件弊端?使用 typeof 的判斷object弊端是顯而易見的 這種弊端同使用 instanceof let obj l...