-
在所有編程語言中if是最長用的判斷之一,但在js中到底哪些東西可以在if中式作為判斷表達式呢?
例如如何幾行,只是少了一個括號,真假就完全不同,到底表示什么含義呢?
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 已定義未賦值"); }
例如:
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的類型的變量是一樣的。
例如:
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;"); }
例如:
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,都是假
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第六類已定義的函數,根據調用方式又分為兩種
第一種:不帶括號的,如果定義了就是真,沒有定義會報錯
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