在javascript中if语句判断失误是怎么回事

JavaScript019

在javascript中if语句判断失误是怎么回事,第1张

在javascript中if语句判断失误是怎么回事

由于numm变量中是一个存在字符的字符串,在JS中,由于if()语句的括号中需要一个布尔类型的值,而当它的值不是布尔类型时,JS会尝试将其转变为布尔值。

那么,我们进行一个类型测试代码,你放在你的浏览器中运行一下,就知道各种情况转换为布尔值将会如何:

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>测试各种情况下的布尔转换</title>

</head>

<body>

<script>

//空字符串转布尔:

document.write("“''”转换为布尔值为:" + Boolean('') + '<hr/>')

//字符串0转布尔:

document.write("“'0'”转换为布尔值为:" + Boolean('0') + '<hr/>')

//任意字符串转布尔:

document.write("“'false'”转换为布尔值为:" + Boolean('false') + '<hr/>')

//null转换为布尔:

document.write("“null”转换为布尔值为:" + Boolean(null) + '<hr/>')

//数字0转换为布尔:

document.write("“0”转换为布尔值为:" + Boolean(0) + '<hr/>')

//数字1转换为布尔:

document.write("“1”转换为布尔值为:" + Boolean(1) + '<hr/>')

//大于1的整数数字转换为布尔:

document.write("“6”转换为布尔值为:" + Boolean(6) + '<hr/>')

//大于0的浮点数转换为布尔:

document.write("“0.25”转换为布尔值为:" + Boolean(0.25) + '<hr/>')

//负数转换为布尔:

document.write("“-25”转换为布尔值为:" + Boolean(-25) + '<hr/>')

//对于if来说,还可以对未赋值(undefined)进行直接判断:

if(!a) document.write("变量a未赋值<hr/>")

var a=0

if(typeof a != 'undefined') document.write("变量已经赋值<hr/>")

</script>

</body>

</html>

你看看他的类型是什么?或者你可以换一种方式来做if判断:

 if(data){

        alert("已经存在")

 }

我们做前后端交互的时候,一般都会用一个标志来做判断,比如返回对象是obj:

if(obj.flag==1){

       console.log(obj.content)

 }

后台返回应该是一个对象!!

你用双引号把true引起来了,相当于这个true不再是一个bool类型,而是一个string类型了,这似乎就和你想要的结果有出入了。

你把引号去了看看,如果不行的话直接if(sign)这样看看。