美文网首页
js判断数组,字符串是否为真

js判断数组,字符串是否为真

作者: xilong | 来源:发表于2017-11-05 19:28 被阅读64次

最近在工作中需要判断空数组,我想当然的以为 var arr=[],if(arr) 会为false,结果出现错误,是为真。
后来知道数组(不管是不是空的)属于对象类型,对象类型转为boolean类型(内部对应ToBoolean()操作)时都是true
所以我就测试了一些常用数据类型,和这些类型应该使用的判断方法

1、判断空数组(根据数组长度判断)

//应该使用 判断数组的长度

var arr1 = [];
if(arr1.length){
    console.log('It\'s true')
}else {
    console.log('It\'s false')          //打印出It's false
}

//不应该使用
if(arr1){
    console.log('It\'s true')
}                //打印It's true

2、常见变量的判断

//1、为空字符串,打印false
var string1 = ''
if(string1){
    console.log('It\'s true')
}else {
    console.log('It\'s false')
}

//2、只申明 没有初始化,打印false
var string1 
if(string1){
    console.log('It\'s true')
}else {
    console.log('It\'s false')
}

//3、没有申明,会直接报错
if(string1){
    console.log('It\'s true')
}else {
    console.log('It\'s false')
}

//4、string1 为一个对象的未申明属性,打印false
var a = {};
var string1 = a.abb;
if(string1){
    console.log('It\'s true')
}else {
    console.log('It\'s false')
}

但是在sessionStorage,和 localStorage的判断中却不一样,存一个未声明的属性居然为真

//1、未申明属性abb,打印结果为true
    var a={}
    sessionStorage.setItem('abb',a.abb);
    console.log(sessionStorage.getItem('abb'))                //打印undefined
    console.log(typeof (sessionStorage.getItem('abb')))       //打印string
    if(sessionStorage.getItem('abb')){                        //打印true
        console.log('It\'s true')
    }else {
        console.log('It\'s false')
    }
//对于这种情况,可以判断不等于undefined  打印false 
  if(sessionStorage.getItem('abb') && sessionStorage.getItem('abb')!= 'undefined'){
        console.log('It\'s true')
    }else {
        console.log('It\'s false')
    }

//2、申明为空字符串,打印为false
     var a={
        abb:''
    }
    sessionStorage.setItem('abb',a.abb);
    console.log(sessionStorage.getItem('abb'))                //打印为空
    console.log(typeof (sessionStorage.getItem('abb')))       //打印string
    if(sessionStorage.getItem('abb')){                        //打印false
        console.log('It\'s true')
    }else {
        console.log('It\'s false')
    }

//3、直接不存在,打印为false
    console.log(sessionStorage.getItem('abb'))          //null
    console.log(typeof (sessionStorage.getItem('abb')))     // Object
   if(sessionStorage.getItem('abb')){          //打印false            
        console.log('It\'s true')               
    }else {
        console.log('It\'s false')
    }

相关文章

网友评论

      本文标题:js判断数组,字符串是否为真

      本文链接:https://www.haomeiwen.com/subject/ibthmxtx.html