1、var定义变量的作用域为局部作用域与全局作用域
let、const定义变量的作用域为块级作用域 let、const的区别是let定义变量,const定义常量
2、js的循环方式有哪些?
for循环、while、do ... while
3、如何判定未知数据x的类型?
1)常见的方法typeof,typeof返回的类型都是字符串
2)instanceof:c instanceof Array、f instanceof Function等
3)根据对象的constructor判断:c.constructor === Array、d.constructor === Date
4)使用Object.prototype.toString.call(x)
Object.prototype.toString.call(a) === ‘[object String]’
4、split()和join()的区别是?
split() 方法用于把一个字符串根据指定字符串分割成字符串数组
join() 方法用于把数组中的所有元素根据指定字符串拼接成一个字符串返回
5、请写出下列代码的输出顺序。
1)function foo(){
console.log(1);
setTimeout(function(){
console.log(2);
}, 0);
console.log(3);
};
setTimeout(foo, 100);
console.log(4);
setTimeout创建了新的宏任务
输出:4,1,3,2
2)function fun(){
var r = new Array();
for(var i = 0; i < 3; i++){
r[i]=function(){
return i;
}
}
return r;
}
var fun2 = fun()
for(var i = 0; i < fun2.length; i++){
console.log(fun2[i]());
}
闭包
输出:3,3,3
3)var a = (1&&2&&5)||3;
console.log(a);
从左往右依次判断
1&&2:2
2&&5:5
5 || 3:5
输出:5
4)console.log(1 == true);
console.log(2 == true);
console.log(1 === true);
console.log(2 === true);
== 会进行隐式转换,使==两边类型相同再比较
true隐式转换为1:Number(true)
=== 会先比较类型,类型不同就是false
输出:true,false,false,false
上元教育王老师:15061576973