每日3題
31 關(guān)于AMD萌朱、CMD規(guī)范區(qū)別說法正確的是扳还?(多選)
A.AMD規(guī)范:是 RequireJS在推廣過程中對模塊定義的規(guī)范化產(chǎn)出的
B.CMD規(guī)范:是SeaJS 在推廣過程中對模塊定義的規(guī)范化產(chǎn)出的
C.CMD 推崇依賴前置;AMD 推崇依賴就近
D.CMD 是提前執(zhí)行;AMD 是延遲執(zhí)行
E.AMD性能好,因?yàn)橹挥杏脩粜枰臅r(shí)候才執(zhí)行;CMD用戶體驗(yàn)好,因?yàn)闆]有延遲,依賴模塊提前執(zhí)行了
32 以下代碼執(zhí)行后滔驶,控制臺中的輸出內(nèi)容為砰苍?
console.log(['1','2','3'].map(parseInt));
33 以下代碼執(zhí)行后铣除,控制臺中的輸出內(nèi)容為铣缠?
const person = { name: "leo" };
function say(age) {
return `${this.name} is ${age}`;
}
console.log(say.call(person, 5));
console.log(say.bind(person, 5));
公眾號【今天也要寫bug】烘嘱,每日更新前端面試題
答案及解析
31 答案 AB
- 考察 AMD 和 CMD 規(guī)范的了解
- C. CMD 推崇依賴就近,AMD 推崇依賴前置
D. CMD 是延遲執(zhí)行蝗蛙,AMD 是提前執(zhí)行
E. CMD 性能好蝇庭,因?yàn)橹挥杏脩粜枰臅r(shí)候才執(zhí)行,AMD 用戶體驗(yàn)好捡硅,因?yàn)闆]有延遲哮内,依賴模塊提前執(zhí)行了
32
// 答案:[1, NaN, NaN]
// 考察 map 方法和 parseInt 方法
// map 方法接受兩個(gè)參數(shù):callback 和 thisArg
// callback 接受 3 個(gè)參數(shù):currentValue、index壮韭、array
// parseInt 接受 2 個(gè)參數(shù):string北发、radix
console.log(["1", "2", "3"].map(parseInt));
// 此處 parseInt 即為 callback
// 所以 parseInt 的兩個(gè)參數(shù)為:currentValue、index
// 等價(jià)于:
console.log(
["1", "2", "3"].map((currentValue, index) => parseInt(currentValue, index))
);
// currentValue='1'時(shí)喷屋,index=0琳拨,parseInt('1', 0)=1
// 涉及 parseInt 的特殊情況,當(dāng) parseInt 的第二個(gè)參數(shù)未指定或?yàn)?屯曹,第二個(gè)參數(shù)會(huì)自行推斷
// 根據(jù)推斷規(guī)則(詳見MDN)从绘,parseInt('1', 0)=parseInt('1', 10)=1
// currentValue='2'時(shí)寄疏,index=1,parseInt('2', 1)=NaN僵井,radix 不等于0 且 不在 2~36 之間陕截,則結(jié)果為 NaN
// currentValue='3'時(shí),index=2批什,parseInt('3', 2)=NaN农曲,因?yàn)?3 不是有效的 2 進(jìn)制數(shù)
// 當(dāng) radix 是有效的值(2~32),待轉(zhuǎn)換的字符串的每一位必須是有效的 radix 進(jìn)制數(shù)
33
// 答案:leo is 5 和 一個(gè)函數(shù)
// 考察 call 和 bind 的區(qū)別
// call 和 apply 返回的是指定 this 和參數(shù)后調(diào)用函數(shù)的值(是結(jié)果)
// bind 返回的是指定 this 和參數(shù)后的函數(shù)的拷貝(是函數(shù))
const person = { name: "leo" };
function say(age) {
return `${this.name} is ${age}`;
}
console.log(say.call(person, 5));
console.log(say.bind(person, 5));