js中if判斷條件的型別

2021-10-07 17:54:06 字數 3083 閱讀 9738

在所有程式語言中if是最長用的判斷之一,但在js中到底哪些東西可以在if中式作為判斷表示式呢?

例如如下幾行,只是少了乙個括號,真假就完全不同,到底表示什麼含義呢

var obj={};  

obj.funtext=function(){};

if(obj.funtext)

else

obj.funtext=function(){};

if(obj.funtext())

else

1第一類已定義的變數但未賦值在if中認為是假

例如:

var  t;  

if(t)

else

2第二類已定義的變數,賦值為空字串在if中認為是假,賦值為其他的字串,也就是是字串中有字元就認為是真

例如:

var  t;  

t="";

if(t)

else

if判斷是假

再例如:

var t;

t=" ";

if(t)

else

t="111";

if(t)

else

if判斷是真,也就是對於字串型別,只要有字元,即使是空格字元if判斷也為真。

3第三類已定義的變數,賦值為true在if中認為是真,賦值為false,則為假,這和其他語言中bool的型別的變數是一樣的。

例如:

var  t;  

t=false;

if(t)

else

t=true;

if(t)

else

4第四類已定義的變數,賦值為0在if中則為假,其他數值認為是真,這和c語言中數值的型別的變數是一樣的。

例如:

var  t;  

t=0;

if(t)

else

t=0.0;

if(t)

else

測試發現不管是0,還是0.0都是假

var  t;  

t=2;

if(t)

else

發現非0是都是真5第五類js中的特殊值null,undefined,都是假

var  t=null;  

if(t)

else

t=undefined;

if(t)

else

由於在js中未定義的變數預設值是undefined,因此這也就就解釋了第一類情況

6第六類已定義的函式,根據呼叫方式又分為兩種

第一種:不帶括號的,如果定義了就是真,沒有定義會報錯

function testfunction(){}  

if(testfunction)

else

第二種:帶括號的,其實相當於呼叫函式,自然是根據函式的返回值判斷真假

例如:

function testfunction(){}  

if(testfunction())

else

是假,是因為,函式如果沒有定義返回值值,則返回值是undefined

7第七類已定義的物件,未賦值時在if中則為假,賦值後是真。

例如:

var obj;  

if(obj)

else

其實由於在js中變數在沒有賦值時是沒有型別的,因此和第一種情況是一樣的。

但在賦值後,就會變成真,例如:

var  obj={};  

if(obj)

;");

} else

;");

}

8第八類已定義的物件的屬性字段,和單獨的變數是一樣的,例如數值型為0時是假,其他為真,字串型是為空值時是假,其他為真。

例如

var obj={};  

obj.text="";

if(obj.text)

else

obj.text="text";

if(obj.text)

else

obj.text=0;

if(obj.text)

else

obj.text=1;

if(obj.text)

else

9第九類已定義的物件的方法,和單獨的函式是一樣的,

不加括號是如果沒定義就是假,

var obj={};  

obj.funtext=function(){};

if(obj.funtext)

else

if(obj.funtext1)//未定義屬性,也沒有定義方法

else

加了括號相當於呼叫方法,就是根據返回值判斷真假。

var obj={};  

obj.funtext=function(){};

if(obj.funtext())

else

obj.funtext2=function();

if(obj.funtext2())

else

可以看到在js中可以在if中作為判斷的型別很多,但最終都可以看做這些型別的變形。只要掌握了這些最基本的,就可以靈活運用if判斷了。

最基本是null,undefined,if判斷都是假;對於數值型別,0是假,其他為真;對於字元型別空字串是假,其他為真,對於方法屬性,如果定義了就是真,否則就是假,其他所有都可以看做是這些的變相應用。

js中型別判斷

剛接觸js的時候,用typeof 來判斷,可是發現用來判斷一些簡單型別還可以,但是物件就無法判斷的,都是返回object 後來發現可以用object.prototype.tostring.call o 來判斷o的型別,返回 object array object date object undefi...

js條件判斷

一 if else 條件判斷 if 條件表示式 如果條件表示式為true,執行此處的語句 else if 1 else true 注意 條件表示式最後都轉化成布林型,0表示false,大於等於1表示true。var i king var j king 空格區別 if i j else 輸出 hell...

判斷 JS 中物件的型別

1.typeof 形如 var x xx typeof x string typeof x 返回型別有 undefined string number boolean function object 缺點 對於object型別不能細分是什麼型別 優點 對空null的判斷 undefined 的應用 ...