乐趣区

关于javascript:前端面试题JavaScript篇20220909

每日 3 题

31 对于 AMD、CMD 标准区别说法正确的是?(多选)

A.AMD 标准:是 RequireJS 在推广过程中对模块定义的规范化产出的
B.CMD 标准:是 SeaJS 在推广过程中对模块定义的规范化产出的
C.CMD 推崇依赖前置;AMD 推崇依赖就近
D.CMD 是提前执行;AMD 是提早执行
E.AMD 性能好, 因为只有用户须要的时候才执行;CMD 用户体验好, 因为没有提早, 依赖模块提前执行了

32 以下代码执行后,控制台中的输入内容为?

console.log(['1','2','3'].map(parseInt));

33 以下代码执行后,控制台中的输入内容为?

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 标准的理解
  • C. CMD 推崇依赖就近,AMD 推崇依赖前置
    D. CMD 是提早执行,AMD 是提前执行
    E. CMD 性能好,因为只有用户须要的时候才执行,AMD 用户体验好,因为没有提早,依赖模块提前执行了

32

// 答案:[1, NaN, NaN]
// 考查 map 办法和 parseInt 办法
// map 办法承受两个参数:callback 和 thisArg
// callback 承受 3 个参数:currentValue、index、array
// parseInt 承受 2 个参数:string、radix

console.log(["1", "2", "3"].map(parseInt));
// 此处 parseInt 即为 callback
// 所以 parseInt 的两个参数为:currentValue、index
// 等价于:console.log(["1", "2", "3"].map((currentValue, index) => parseInt(currentValue, index))
);
// currentValue='1' 时,index=0,parseInt('1', 0)=1
// 波及 parseInt 的非凡状况,当 parseInt 的第二个参数未指定或为 0,第二个参数会自行推断
// 依据推断规定(详见 MDN),parseInt('1', 0)=parseInt('1', 10)=1

// currentValue='2' 时,index=1,parseInt('2', 1)=NaN,radix 不等于 0 且 不在 2~36 之间,则后果为 NaN

// currentValue='3' 时,index=2,parseInt('3', 2)=NaN,因为 3 不是无效的 2 进制数
// 当 radix 是无效的值 (2~32),待转换的字符串的每一位必须是无效的 radix 进制数 

33

// 答案:leo is 5 和 一个函数
// 考查 call 和 bind 的区别
// call 和 apply 返回的是指定 this 和参数后调用函数的值(是后果)// bind 返回的是指定 this 和参数后的函数的拷贝(是函数)const person = {name: "leo"};
function say(age) {return `${this.name} is ${age}`;
}
console.log(say.call(person, 5));
console.log(say.bind(person, 5));
退出移动版