面试题
怎么判断一个变量是null
先看一下 typeof
所能检测的值
console.log('""',typeof '') // string
console.log('new String()',typeof new String()) //object
console.log('1',typeof 1) //number
console.log('true',typeof true) //boolean
console.log('[]',typeof []) //object
console.log('{}',typeof {}) //object
console.log('function a(){}',typeof function(){}) //function
console.log('class a{}',typeof class a{}) //function
console.log('null',typeof null) //object
console.log('undefined',typeof undefined) //undefined
console.log('NaN',typeof NaN) number
再看一下转化为布尔类型后为false的情况
Boolean('') //false
Boolean(0) //false
Boolean(null) //false
Boolean(undefined) //false
Boolean(NaN) //false
最简单的方式就是使用===
null === null //true
null === undefined //false
第二种方法就是判断变量转化为布尔值为false,并且不是空字符串,不是数字0,不是undefined,不是NaN
function isNull(value){
if(!value && typeof(value)!=='undefined' && value!=0 && value===value){//只有NaN和自己不相等
return true;
}else{
return false;
}
}
原型链方法
重写array的tostring方法
Array.prototype.toString=function(){
var str='';
this.forEach((item,index)=>{
if(index==0){
str = item+''
}else{
str = str+','+item
}
})
return str
}
一个知道宽高的div让他水平垂直居中
<div class="con">
<div class="item"></div>
</div>
*{
padding: 0;
margin: 0;
}
.con{
width: 200px;
height: 200px;
background-color: red;
}
.item{
height: 100px;
width: 100px;
background-color: blueviolet;
}
1.使用flex布局
.con{
display: flex;
justify-content:center;
align-items: center;
}
2.使用定位配合transform
.con{
position: relative;
}
.item{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%)
}
3.使用定位配合margin
.con{
position: relative;
}
.item{
position: absolute;
top: 50%;
left: 50%;
margin-left: -50px;
margin-top: -50px;
}
4.使用定位并且四个方向都设置为0
.con{
position: relative;
}
.item{
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
}
5.使用table-call
.con{
display: table-cell;
vertical-align: middle;
text-align: center;
}
.item{
display: inline-block;
}