JavaScript中if真假的判断

遇到好几次了老是忘记,总结一下
总结:
最基本是null,undefined,if判断都是假;对于数值类型,0是假,其他为真;对于字符类型空字符串是假,其他为真,对于方法属性,如果定义了就是真,否则就是假,其他所有都可以看做是这些的变相应用。

1.定义的变量但未赋值在if中认为是假

2.赋值为空字符串在if中认为是假

3. 只要有字符,即使是"空格字符"if判断也为真。

4. 赋值为0或者0.0在if中则为假,其他数值认为是真

5. js中的特殊值null,undefined,都是假

6. 已定义的函数,根据调用方式又分为两种

6.1 不带括号的,如果定义了就是真,没有定义会报错

function testfunction(){}
if(testfunction)
{
    alert("true");
}
else
{
    alert("false");
}

6. 2带括号的,其实相当于调用函数,自然是根据函数的返回值判断真假

function testfunction(){}
if(testfunction())
{
    alert("true");
}
    else
{
    alert("false");
}

7. 已定义的对象,未赋值时在if中则为假,赋值后是真。

8. 已定义的对象的属性字段,和单独的变量是一样的,例如数值型为0时是假,其他为真,字符串型是为空值时是假,其他为真。

var obj={};
obj.Text="";
if(obj.Text)
{
     alert("true");
}
else
{
    alert("false");
}

结果false

obj.Text="Text";
if(obj.Text)
{
    alert("true");
}
else
{
    alert("false");
}

结果true

obj.Text=0;
if(obj.Text)
{
    alert("true");
}
    else
{
    alert("false");
}

结果为false

obj.Text=0;
if(obj.Text)
{
    alert("true");
}
    else
{
    alert("false");
}

结果为true

9. 已定义的对象的方法,和单独的函数是一样的。 不加括号是如果没定义就是假。加了括号相当于调用方法,就是根据返回值判断真假。

var obj={};
obj.Funtext=function(){};
kif(obj.Funtext)
{
     alert("true");
}
else
{
     alert("false");
}
var obj={};
obj.Funtext=function(){};
if(obj.Funtext())
{
     alert("true");
}
else
{
     alert("false");
}

参考
JavaScript中的“if”真假判断总结

猜你喜欢

转载自blog.csdn.net/weixin_43755104/article/details/107664927