前端面试题JavaScript篇——2022-09-09

每日3题 31 关于AMD、CMD规范区别说法正确的是?(多选)
【前端面试题JavaScript篇——2022-09-09】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、radixconsole.log(["1", "2", "3"].map(parseInt)); // 此处 parseInt 即为 callback // 所以 parseInt 的两个参数为:currentValue、index // 等价于: console.log( ["1", "2", "3"].map((currentValue, index) => parseInt(currentValue, index)) ); // currentValue='https://www.it610.com/article/1'时,index=0,parseInt('1', 0)=1 // 涉及 parseInt 的特殊情况,当 parseInt 的第二个参数未指定或为0,第二个参数会自行推断 // 根据推断规则(详见MDN),parseInt('1', 0)=parseInt('1', 10)=1// currentValue='https://www.it610.com/article/2'时,index=1,parseInt('2', 1)=NaN,radix 不等于0 且 不在 2~36 之间,则结果为 NaN// currentValue='https://www.it610.com/article/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));

    推荐阅读