在全部編程語言中if是最長用的判斷之一,但在js中到底哪些東西能夠在if中式做爲判斷表達式呢?html
例如如何幾行,只是少了一個括號,真假就徹底不一樣,到底表示什麼含義呢?編程
var obj={}; obj.Funtext=function(){}; if(obj.Funtext) { alert("true obj.Funtext;"); } else { alert("false obj.Funtext"); } obj.Funtext=function(){}; if(obj.Funtext()) { alert("true obj.Funtext();"); } else { alert("false obj.Funtext()"); }
例如:編程語言
var t; if(t) { alert("true 已定義未賦值"); } else { alert("false 已定義未賦值"); }
2第二類已定義的變量,賦值爲空字符串在if中認爲是假,賦值爲其餘的字符串,也就是是字符串中有字符就認爲是真
例如:ide
var t; t=""; if(t) { alert("true t='';"); } else { alert("false t=''"); }
再例如:函數
var t; t=" "; if(t) { alert("true t=' ';"); } else { alert("false t=' '"); } t="111"; if(t) { alert("true t='111';"); } else { alert("false t='111'"); }
3第三類已定義的變量,賦值爲true在if中認爲是真,賦值爲false,則爲假,這和其餘語言中bool的類型的變量是同樣的。測試
例如:spa
var t; t=false; if(t) { alert("true t=false;"); } else { alert("false t=false;"); } t=true; if(t) { alert("true t=true;"); } else { alert("false t=true;"); }
例如:3d
var t; t=0; if(t) { alert("true t=0;"); } else { alert("false t=0;"); } t=0.0; if(t) { alert("true t=0.0;"); } else { alert("false t=0.0;"); }
var t; t=2; if(t) { alert("true t=2;"); } else { alert("false t=2;"); }
5第五類js中的特殊值null,undefined,都是假code
var t=null; if(t) { alert("true t=null;"); } else { alert("false t=null;"); } t=undefined; if(t) { alert("true t=undefined;"); } else { alert("false t=undefined;"); }
6第六類已定義的函數,根據調用方式又分爲兩種htm
第一種:不帶括號的,若是定義了就是真,沒有定義會報錯
function testfunction(){} if(testfunction) { alert("true testfunction;"); } else { alert("false testfunction;"); }
例如:
function testfunction(){} if(testfunction()) { alert("true testfunction;"); } else { alert("false testfunction;"); }
7第七類已定義的對象,未賦值時在if中則爲假,賦值後是真。
例如:
var obj; if(obj) { alert("true obj;"); } else { alert("false obj;"); }
但在賦值後,就會變成真,例如:
var obj; obj={}; if(obj) { alert("true obj={};"); } else { alert("false obj={};"); }
例如
var obj={}; obj.Text=""; if(obj.Text) { alert("true obj.Text;"); } else { alert("false obj.Text"); } obj.Text="Text"; if(obj.Text) { alert("true obj.Text;"); } else { alert("false obj.Text"); } obj.Text=0; if(obj.Text) { alert("true obj.Text;"); } else { alert("false obj.Text"); } obj.Text=1; if(obj.Text) { alert("true obj.Text;"); } else { alert("false obj.Text"); }
不加括號是若是沒定義就是假,
var obj={}; obj.Funtext=function(){}; if(obj.Funtext) { alert("true obj.Funtext;"); } else { alert("false obj.Funtext"); } if(obj.Funtext1)//未定義屬性,也沒有定義方法 { alert("true obj.Funtext1;"); } else { alert("false obj.Funtext1"); }
加了括號至關於調用方法,就是根據返回值判斷真假。
var obj={}; obj.Funtext=function(){}; if(obj.Funtext()) { alert("true obj.Funtext();"); } else { alert("false obj.Funtext()"); } obj.Funtext2=function(){ return "ff"}; if(obj.Funtext2()) { alert("true obj.Funtext2();"); } else { alert("false obj.Funtext2()"); }
能夠看到在js中能夠在if中做爲判斷的類型不少,但最終均可以看作這些類型的變形。只要掌握了這些最基本的,就能夠靈活運用if判斷了。
最基本是null,undefined,if判斷都是假;對於數值類型,0是假,其餘爲真;對於字符類型空字符串是假,其餘爲真,對於方法屬性,若是定義了就是真,不然就是假,其餘全部均可以看作是這些的變相應用。
轉載地址:紅黑聯盟 http://www.2cto.com/kf/201407/314978.html