- 首页 > it技术 > >
- 第一题 写一个判断所有数据类型的方法getType,入参为任意变量,返回值为该参数类型的字符串形式,如:
getType([ ]) 返回 ‘array’
getType(2) 返回 ‘number’
function getType(obj){
var s= Object.prototype.toString.call(obj);
return s.slice(s.indexOf(" ")+1,s.length-1).toLowerCase();
}
- 第二题 至少用两种方法实现两列布局,左列定宽200px,右列自适应宽
>
#box{
overflow: hidden;
display: flex;
}
.left{
/* float: left;
*/
width: 200px;
height: 500px;
background-color: #0000FF;
}
.right{
/* margin-left: 200px;
*/
background-color: pink;
height: 500px;
flex: 1;
}
- 输出结果是什么?请解释其技术原理
var number = 50;
var obj = {
number:2,
getNum:function(){
var number = 6
return this.number
}
}
console.log(obj.getNum())//2 this指的是obj
console.log(obj.getNum.call())//50如果传入null也是50this指的是windows
console.log(obj.getNum.call({number:7}))//7this的当前传入的对象
- 第四题 输出结果是什么?请解释其技术原理
for(var index=0;
index<5;
index++){
(function(){
setTimeout(function(){
console.log(index)
},index*1000)
})(index)
}
//5个5
//for循环没有块级作用域 循环结束index为5 setTimeout为异步操作等循环结束后再执行
//var 换成let可以达到同样的效果
for(var i=0;
i<5;
i++){
(function(i){
setTimeout(function(){
console.log(i)// 0 1 2 3 4
})
})(i)
}
- 输出结果是什么?请解释其技术原理
var test_b = 11
console.log(window)
if(!(test_a in window)){
console.log(window)
var test_a = 11}else{
test_b++
}
console.log(test_a) //Undefined
console.log(test_b) //12
//全局的声明的变量都会成为window的属性(全局声明的funtion都会成为window的方法)
//test_a test_b 都是属于window作用域下test_a in window 为true 取反的话此时为false 走else分支
推荐阅读