在所有程式語言中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 的應用 ...