javascript if條件判斷方法小結(jié)
條件語(yǔ)句用于基于不同的條件來(lái)執(zhí)行不同的動(dòng)作。
條件語(yǔ)句
通常在寫(xiě)代碼時(shí),您總是需要為不同的決定來(lái)執(zhí)行不同的動(dòng)作。您可以在代碼中使用條件語(yǔ)句來(lái)完成該任務(wù)。
在 JavaScript 中,我們可使用以下條件語(yǔ)句:
•if 語(yǔ)句 - 只有當(dāng)指定條件為 true 時(shí),使用該語(yǔ)句來(lái)執(zhí)行代碼
•if...else 語(yǔ)句 - 當(dāng)條件為 true 時(shí)執(zhí)行代碼,當(dāng)條件為 false 時(shí)執(zhí)行其他代碼
•if...else if....else 語(yǔ)句 - 使用該語(yǔ)句來(lái)選擇多個(gè)代碼塊之一來(lái)執(zhí)行
•switch 語(yǔ)句 - 使用該語(yǔ)句來(lái)選擇多個(gè)代碼塊之一來(lái)執(zhí)行
If 語(yǔ)句
只有當(dāng)指定條件為 true 時(shí),該語(yǔ)句才會(huì)執(zhí)行代碼。
語(yǔ)法
if (條件)
{
只有當(dāng)條件為 true 時(shí)執(zhí)行的代碼
}
注意:請(qǐng)使用小寫(xiě)的 if。使用大寫(xiě)字母(IF)會(huì)生成 JavaScript 錯(cuò)誤!
實(shí)例
當(dāng)時(shí)間小于 20:00 時(shí),生成一個(gè)“Good day”問(wèn)候:
if (time<20)
{
x="Good day";
}
x 的結(jié)果是:
Good day
親自試一試
請(qǐng)注意,在這個(gè)語(yǔ)法中,沒(méi)有 ..else..。您已經(jīng)告訴瀏覽器只有在指定條件為 true 時(shí)才執(zhí)行代碼。
If...else 語(yǔ)句
請(qǐng)使用 if....else 語(yǔ)句在條件為 true 時(shí)執(zhí)行代碼,在條件為 false 時(shí)執(zhí)行其他代碼。
語(yǔ)法
if (條件)
{
當(dāng)條件為 true 時(shí)執(zhí)行的代碼
}
else
{
當(dāng)條件不為 true 時(shí)執(zhí)行的代碼
}
實(shí)例
當(dāng)時(shí)間小于 20:00 時(shí),將得到問(wèn)候 "Good day",否則將得到問(wèn)候 "Good evening"。
if (time<20)
{
x="Good day";
}
else
{
x="Good evening";
}
x 的結(jié)果是:
Good day
親自試一試
If...else if...else 語(yǔ)句
使用 if....else if...else 語(yǔ)句來(lái)選擇多個(gè)代碼塊之一來(lái)執(zhí)行。
語(yǔ)法
if (條件 1)
{
當(dāng)條件 1 為 true 時(shí)執(zhí)行的代碼
}
else if (條件 2)
{
當(dāng)條件 2 為 true 時(shí)執(zhí)行的代碼
}
else
{
當(dāng)條件 1 和 條件 2 都不為 true 時(shí)執(zhí)行的代碼
}
實(shí)例
如果時(shí)間小于 10:00,則將發(fā)送問(wèn)候 "Good morning",否則如果時(shí)間小于 20:00,則發(fā)送問(wèn)候 "Good day",否則發(fā)送問(wèn)候 "Good evening":
if (time<10)
{
x="Good morning";
}
else if (time<20)
{
x="Good day";
}
else
{
x="Good evening";
}
x 的結(jié)果是:
Good morning
在javascript中,哪些值能作為if的條件呢
1、布爾變量true/false
2、數(shù)字非0,非NaN/ (0 或NaN)
見(jiàn)下面的例子,莫以為負(fù)數(shù)就以為if語(yǔ)句為假了。
var i = -1;
if(i){
alert('here');
}else{
alert('test is ok!');
}
3、對(duì)象非null/(null或undefined)
4、字符串非空串(“”)/空串("")
綜上所述,對(duì)于字符串,不用寫(xiě)一大堆if(str!=null && str!=undefined && str !=''), 只要用一句
if(!str){
//do something
}
就可以了。
對(duì)于數(shù)字的非空判斷,則要考慮使用isNaN()函數(shù),NaN不和任何類(lèi)型數(shù)據(jù)相等,包括它本身,只能用isNaN()判斷。對(duì)于數(shù)字類(lèi)型,if(a)語(yǔ)句中的a為0時(shí)if(a)為假,非0時(shí)if(a)為真
var b;
var a = 0;
a = a + b;
if(a){
alert('1');
}else{
alert('2');
}
if(isNaN(a)){
alert('a is NaN');
}
javascript教程:關(guān)于if語(yǔ)句優(yōu)化的方法 if簡(jiǎn)寫(xiě)
UglifyJS是一個(gè)對(duì)javascript進(jìn)行壓縮和美化的工具,在它的文檔說(shuō)明中,我看到了幾種關(guān)于if語(yǔ)句優(yōu)化的方法。盡管我還沒(méi)使用它去做一些嘗試性的測(cè)試,但從這里可以看到它的確對(duì)js作了美化的工作。也許有人認(rèn)為if語(yǔ)句就那么簡(jiǎn)單,能優(yōu)化到什么程度?但是看看以下的幾種方式,你也許會(huì)改變看法。
一、使用常見(jiàn)的三元操作符
if (foo) bar(); else baz(); ==> foo?bar():baz();
if (!foo) bar(); else baz(); ==> foo?baz():bar();
if (foo) return bar(); else return baz(); ==> return foo?bar():baz();
對(duì)于以上使用三元操作符來(lái)優(yōu)化if語(yǔ)句你肯定不會(huì)陌生,或許你經(jīng)常使用它。
腳本之家給出的例子:
<script>
var i=9
var ii=(i>8)?100:9;
alert(ii);
</script>
輸出結(jié)果:
100
二、使用and(&&)和or(||)運(yùn)算符
if (foo) bar(); ==> foo&&bar();
if (!foo) bar(); ==> foo||bar();
老實(shí)說(shuō),我并沒(méi)有這樣去寫(xiě)過(guò)代碼,這種寫(xiě)法我在學(xué)習(xí)《鳥(niǎo)哥的 Linux 私房菜》時(shí)看到過(guò),但我并沒(méi)想到在js中實(shí)現(xiàn)它。
三、省略大括號(hào){}
if (foo) return bar(); else something(); ==> {if(foo)return bar();something()}
這種寫(xiě)法你我都很熟悉,但我建議在代碼優(yōu)化的時(shí)候這樣做,或者交給UglifyJS幫你去解決。畢竟少一個(gè)大括號(hào),代碼的可閱讀性并不高。
寫(xiě)到這里,我想到j(luò)Query之父在《精通 JavaScript》中的一個(gè)獲取HTML元素屬性的方法。
function getAttr(el, attrName){
var attr = {'for':'htmlFor', 'class':'className'}[attrName] || attrName;
};
如果我們不這樣寫(xiě),可能我們需借助于兩個(gè)if語(yǔ)句來(lái)進(jìn)行處理,而上面的代碼不僅簡(jiǎn)潔有效,而且可閱讀性強(qiáng)。
仔細(xì)想想,好些時(shí)候我們都能找到解決問(wèn)題的有效途徑,但關(guān)鍵在于我們是否用心去尋找一種更好的途徑。
【javascript技巧】if(x==null)簡(jiǎn)寫(xiě)
if(x==null)或if (typeof (x) == 'undefined')可以簡(jiǎn)寫(xiě)為if(!x),未驗(yàn)證。
反之if(x)表示x非空
判斷對(duì)象是否存在
if(document.form1.softurl9){
//判斷是否存在softurl9,防止js出錯(cuò)
}
if(document.getElementById("softurl9")){
//判斷是否存在softurl9,防止js出錯(cuò)
}
相關(guān)文章

javascript實(shí)現(xiàn)畫(huà)不相交的圓

JavaScript實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的八種方式

Javascript將字符串日期格式化為yyyy-mm-dd的方法

js獲取元素的偏移量offset簡(jiǎn)單方法(必看)

JavaScript 中的 this 簡(jiǎn)單規(guī)則