请问以下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()
版权归原作者 躺平了的斑马很机灵 所有, 如有侵权,请联系我们删除。