!function test1(){
<span style="color:#ff0000">var a,b=-1,c= 1,d= 0,e=null,f=undefined,g='',h=""</span>
if(!a){
console.log('a='+a)
}
if(!b){
console.log("b="+b)
}
if(!c){
console.log("c="+c)
}
if(!d){
console.log("d="+d)
}
if(!e){
console.log("e="+e)
}
if(!f){
console.log("f="+f)
}
if(!g){
console.log("g="+g)
}
if(!h){
console.log("h="+h)
}
}()
设定了各种变量类型,分别放入if条件中
执行结果
a=undefined
d=0
e=null
f=undefined
g=
h=
i=false
js中的if()判断成立与否的条件是不是只有true跟false
if(){
语句
}
当括号里面的值为0 空字符 false null undefined 的时候就相当于false 则不执行语句 除此之外的值就执行语句
javascript中 if(变量)与if(变量=true)的不同
var a//定义一个变量没有初始化if(a){alert(1)
return}//这里不会执行,因为a没有值,所以为false;a=0//这里给a赋值为0if(a){alert(1)
return}//在来执行这句话,因为a=0;0代表false,所以还是不执行;a=1或者a=“123”;if(a){alert(1)
return}//这里a=除0以为的数,或者字符或者obj都表示为真,这里的alert就会执行! 在来看第二种情况;
var
bif(b=="")和if(b==null)这里谁会执行呢,当然是后面一种,因为b是没有定义值的,如果是var
b="",这样的话就会执行第一种b =
1if(b==1)和if(b=="1")这里哪一种会执行呢,答案是两种都会执行!因为js的==表示的是数值相等;谢谢,希望楼主可以理解!
还有就是楼主的这种情况:
var
cc=0if(c==false)会不会执行呢,答案是肯定的;c=1if(c==true)也一样会执行!但是我们看下面这样会执行么?c=2或
者c="admin"if(c==true)alert(1)这句话会执行么,答案是否定的,因为默认表示的是,0为false而1为true,对于其他
的就没有这么定义,所以这里不会执行,当然如果你是这样if(c)那这里就会执行了!
你可以试试看这个:var a = 1
var b = '1'
alert(a===b)//为false
这是因为,双等号的话,会有一个类型的转换,如果是三等号,那就是类型也必需一样才会返回true的。
如果还有问题的话,你再HI我或Q我(我资料里有写Q号)好了。
1、isNaN是Ecmascript提供的内置对象Global的一个函数,如下代码即可以检测
console.log(typeof isNaN)//打印function2、function自然不是Number类型啦,严格来说,funcion属于对象类型,在其他语言中function是单独的一种数据类型,但是在js中Function类型是Object类型的派生类型。js中数据类型有如下:
字符串、数字、布尔、数组、对象(包括函数)、Null、Undefined3、那么得出的结论如下
//自定义的函数var myfc=function() {}
//全局函数,isNaN为ecma内置对象global的函数
var gloabfc=isNaN
//都是函数(函数的类型被ecma划分为对象类型)
console.log('myfc的数据类型为:'+typeof myfc)
console.log('gloabfc的数据类型为:'+typeof gloabfc)
//1、js是一门弱语言类型,其中弱指的是弱数据类型,也就是说变量的类型一开始并不会确定,当为变量赋值时会自动判断后隐式转换它的所有类型类型并进行转换。那么它的变量、表达式等在参与运算时,即使类型不正确,也能通过隐式转换来得到正确地类型。
//2、其他类型转为布尔运算时,如果一个对象(函数也是对象)存在,那么则为true。 如果不存在,会抛出异常,不是你想象中的false,哈哈!
//3、isNaN是存在一个函数,所以为true
function turnBoolean(param) {
if(param){
console.log(param+'的转换结果为:'+true)
}else{
console.log(param+'的转换结果为:'+false)
}
}
turnBoolean(myfc)
turnBoolean(gloabfc)
//其他数据类型转布尔值
turnBoolean(null)
turnBoolean(undefined)
turnBoolean(0)
turnBoolean('')
turnBoolean(1)
turnBoolean({})
其实总结就一句,因为isNaN函数(对象)存在,所以为true