0


前端刷题笔记04

请问以下JS代码在Node环境下的输出顺序是?n1 n2 p1 p2

Promise.resolve().then(()=>{
  console.log('p1');}).then(()=>{
  console.log('p2');})
process.nextTick(()=>{
  console.log('n1');
  process.nextTick(()=>{
    console.log('n2');})})

这题涉及宏任务、微任务
注意虽然两者都属于微任务,但是只要它不是process.nextTick派发的,全部都要排队在process.nextTick后面执行。
参考链接

已知arr = [1,2,NaN,1,4,2,NaN],现为输出arr的不重复元素(重复元素只输出一次),则下列程序中的①处,可以作为判断条件的是(D)

var newArr =[];for(var i =0;i<arr.length;i++){if(①){
    newArr.push(arr[i]);}}
console.log(newArr);

A
newArr.indexOf(arr[i]) == -1

B
!newArr.indexOf(arr[i]) == -1

C
newArr.includes(arr[i])

D
!newArr.includes(arr[i])
解析:
indexOf()方法与includes()方法的一个重要区别在于indexOf()并不能判断数组的NaN元素,换句话说,不管数组arr是否有NaN元素,arr.indexOf(NaN)返回值都是-1,所以AB选项不能对NaN进行去重,不符合题意;如果newArr数组不含有arr数组的某个元素,就应该把该元素添加到newArr数组中,如果含有,则不能添加,这样才能达到去重的目的,即newArr.includes(arr[i])返回值为false时,就应该执行if内的语句,所以应该使用“!”对条件取反,D选项符合题意,C选项不符合题意。

闭包问题

经典闭包

以下哪个语句打印出来的结果是false?A

A
alert(3true)
B
alert(2"2")
C
alert(null == undefined)
D
alert(isNaN(“true”))

解析:
A、

 1 == true // 布尔值会转成number true即为1 所以结果是true 2 == true // 布尔值会转成number true即为1 所以结果是false 3 == true // 布尔值会转成number true即为1 所以结果是false 1 == false // 布尔值会转成number false即为0 所以结果是false 0 == false // 布尔值会转成number false即为0 所以结果是true

B、

数字字符串2会转换成数字2在和数字2进行比较 。 == js会优先选择将字符串转成数字==

C、

Javascript规范中提到, 要比较相等性之前,不能将null和undefined转换成其他任何值,并且规定null和undefined是相等的。 null和undefined都代表着无效的值。 

D、

 isNaN() 函数用于检查其参数是否是非数字值。 如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。 

下列关于 JavaScript 模块化的描述,错误的是(B)

A
AMD推崇依赖前置,CMD推崇依赖就近
B
Sea.js遵循AMD规范,RequireJS遵循CMD规范
C
主流的模块化包括CommonJS,AMD,CMD等
D
模块化有利于管理模块间的依赖,更依赖模块的维护
解析:
第一:首先区分浏览器端和服务器端的js模块化规范。
1)浏览器端的js模块化规范:AMD 和 CMD
2)服务器端的js模块化规范:CommonJS(注:由NodeJS实现)

第二:浏览器端的js模块化规范分别由什么实现。
1)AMD是由require.js实现的(记忆法,认为A是Async异步, 依赖前置,就是所有的依赖必须放在最前面)

2)CMD是由sea.js实现的(依赖就近,所有依赖需要了再引入)

for in 和for of的区别

数组

let arr=['a','b','c']for(let key in arr){
    console.log(key);//下标
    console.log(arr[key]);//值}
let arr=['a','b','c']for(let key of arr){
    console.log(key);//值}

对象

let arr={
    a:1,
    b:2,
    c:3}for(let key in arr){
    console.log(key);//key值
    console.log(arr[key]);//value值}

以下哪些对象是Javascript内置的可迭代对象?ABC

A
Array
B
Map
C
String
D
Object
解析:

//JavaScript的可迭代对象1)数组Arrays

console.log([][Symbol.iterator])for(let x of['a','b'])
    console.log(x)2)字符串Strings
console.log(""[Symbol.iterator])for(let x of"abc")
    console.log(x)3)Map
let map =newMap().set('a',1).set('b',2);
console.log(map[Symbol.iterator]);for(let pair of map){
    console.log(pair);}4)Set
let set =newSet().add('a').add('b');for(let x of set){
    console.log(x);}5)arguments
functionprintArgs(){for(let x of arguments){
        console.log(x);}}printArgs('a','b');6)Typed Arrays

7)Generators,ES6新增加

直接原因是在Object.prototype上没有实现 Symbol.iterator 方法

下面哪个函数可以实现在jQuery中获取当前窗口的宽度值?A

A
width()
B
width(val)
C
width
D
innerWidth()

在这里插入图片描述

标签: 前端 笔记

本文转载自: https://blog.csdn.net/luoniannian/article/details/131003508
版权归原作者 躺平了的斑马很机灵 所有, 如有侵权,请联系我们删除。

“前端刷题笔记04”的评论:

还没有评论