• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

    javascript里的條件判斷_基礎(chǔ)知識(shí)

    來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:34:59
    文檔

    javascript里的條件判斷_基礎(chǔ)知識(shí)

    javascript里的條件判斷_基礎(chǔ)知識(shí):JavaScript 是一種可以在瀏覽器中運(yùn)行的腳本語言,是一種弱語言(相對(duì)于C,C#,JAVA而言),只要是計(jì)算機(jī)語言就會(huì)使用到條件判斷式,而JavaScript作為一種弱語言,它的條件判斷常常令人困惑不解,特別是有其它強(qiáng)語言編程經(jīng)歷的人來說,更是不可理喻!高手
    推薦度:
    導(dǎo)讀javascript里的條件判斷_基礎(chǔ)知識(shí):JavaScript 是一種可以在瀏覽器中運(yùn)行的腳本語言,是一種弱語言(相對(duì)于C,C#,JAVA而言),只要是計(jì)算機(jī)語言就會(huì)使用到條件判斷式,而JavaScript作為一種弱語言,它的條件判斷常常令人困惑不解,特別是有其它強(qiáng)語言編程經(jīng)歷的人來說,更是不可理喻!高手

    JavaScript 是一種可以在瀏覽器中運(yùn)行的腳本語言,是一種弱語言(相對(duì)于C,C#,JAVA而言),只要是計(jì)算機(jī)語言就會(huì)使用到條件判斷式,而JavaScript作為一種“弱”語言,它的條件判斷常常令人困惑不解,特別是有其它強(qiáng)語言編程經(jīng)歷的人來說,更是不可理喻!高手和無惑的人別取笑,我自己也曾經(jīng)有一段時(shí)間郁悶過。先寫一個(gè)例子吧:

    var s = "meizz";
    if (s && s==true)
    {
    alert("Is true");
    }

    咱先不管上面的代碼運(yùn)行的結(jié)果正確與否,我給變量 s 賦的是字符型,而在后面的 if 條件判斷式里是直接把變量 s 作為一個(gè)判斷表達(dá)式寫出的,若是在強(qiáng)語言里對(duì)字符型的變量要么是判斷它的類型是否是字符型或者是判斷這個(gè)變量的值是否等于某字符串,但在 javascript 里就是沒有用類型判斷(typeof)也沒有值判斷(==)而就是這么孤伶伶地在那里,就可以作為一個(gè)條件判斷表達(dá)式。當(dāng)然這種單獨(dú)作為條件表達(dá)式不只是字符型變量,也可以是數(shù)字型變量,也可以是一個(gè)對(duì)象,也可以是一個(gè)函數(shù)或者方法等等。這就正是這種語法令人費(fèi)解的地方。

    我測(cè)試統(tǒng)計(jì)了一下:在 JavaScript 里,不為空 "" 的字符串、不為 0 的數(shù)字、不為 null 的對(duì)象、不為 undefined 的對(duì)象屬性、布爾型 true,單獨(dú)作為判斷式里的一個(gè)表達(dá)式時(shí) JavaScript 通通認(rèn)定為真(true),反之則為假(false)。

    原因?yàn)槭荍S腳本沒有強(qiáng)變量類型,你前一句賦值 var s = "meizz"; 后一句你甚至馬上可以寫成 s = function(){}; ,中間沒有任何的類型轉(zhuǎn)換,而這些寫法在強(qiáng)語言里是不可思議的,甚至是大逆不道的(根本就不支持這種語法),但在JS腳本里卻是那么的自然。原因就是沒有強(qiáng)制變量類型, 變量類型是動(dòng)態(tài)的,也就是說變量本身是沒有類型的,變量的值是有類型的。呵呵,這里扯到其它模塊去了,嗯,關(guān)于變量類型我另外再寫文章討論吧。

    說到這里,就不難理解 if (s && .....這句的判斷式了,同樣的道理,我甚至可以 function s(){} 然后再用 if (s && .... 或者 var s = document.getElementById("ObjectId"); if (s && .... 這樣語法在JS腳本里都是沒錯(cuò)的,至于判斷的結(jié)果可以參考上面的那段統(tǒng)計(jì)結(jié)果。

    現(xiàn)在再來討論上面的那幾句代碼的運(yùn)行結(jié)果,多個(gè)條件判斷式的結(jié)果合成運(yùn)行只有“與”和“或”,到于“非”因?yàn)樗且辉\(yùn)行符,只針對(duì)單個(gè)值,比如 if (!s) ... 至于條件式不只一個(gè)的時(shí)候條件式的結(jié)果只有與和或的運(yùn)行。與(&&),或(||)。上面的那句條件式:if (s && s==true) 就是兩個(gè)條件式的合成判斷。至于與運(yùn)算(只要一個(gè)值為false則值為false)或運(yùn)算(只要一個(gè)值為true則值為true)這些運(yùn)算細(xì)節(jié)我就不多說了,教科書比我的筆頭強(qiáng)多了。現(xiàn)在來分析這個(gè)判斷式:這是一個(gè)“與”運(yùn)算。第一個(gè)判斷式 s ,因?yàn)樗淖址椭挡粸?"" ,在JS當(dāng)然認(rèn)為它等同于 true,第二個(gè)判斷式是 s==true,顯然這個(gè)不相等,值為 false,因?yàn)槭恰芭c”運(yùn)算,當(dāng)然整個(gè)條件判斷式的結(jié)果是 false,所以不會(huì)運(yùn)行 alert()。

    第三,我這里說說幾個(gè)很特殊的條件判斷。在沒有任何聲明(var)和賦值的情況下,直接拿一個(gè)變量來判斷JS會(huì)拋出一個(gè)變量未定義的錯(cuò)誤出來。比如:

    if (ss) alert("條件判斷結(jié)果為 true!");

    運(yùn)行這句代碼就會(huì)出錯(cuò)。因?yàn)檫@個(gè)變量 ss 從未被聲明賦值過,這種情況不等同于上述的 null "" undefined。這種情況一般會(huì)發(fā)生在什么地方呢?一是自己寫代碼不小心未聲明,二就是對(duì)網(wǎng)頁里沒有的控件進(jìn)行操作直接用ID來操作的時(shí)候,比如 if (InputId.value!="") ... ,若是網(wǎng)頁里根本就沒有 id="InputId" 的文本框或者在執(zhí)行這句腳本操作的時(shí)候這個(gè)文本框還沒有被瀏覽器加載,那也就拋出變量未定義的錯(cuò)誤。

    結(jié)果的辦法是:第一種情況用 typeof 判斷。if (typeof(ss)=="undefined") alert("變量未定義"); ,第二種情況則不要直接使用ID來引用對(duì)象而使用標(biāo)準(zhǔn)的對(duì)象引用。例:

    var e = document.getElementById("InputId"); //IE里以前是用 document.all.InputId
    if (e && e.value!="") ;//......

    這樣就不會(huì)出這種錯(cuò)誤了。

    那么就上面這句代碼有人會(huì)說一定要這樣寫呢,為什么不直接

    if(document.getElementById("InputId").value != "") ;//....

    這樣的代碼不是更精練嗎?城然代碼是精簡(jiǎn)了,但錯(cuò)誤也來了。只要網(wǎng)頁里沒有這個(gè)對(duì)象或者這個(gè)對(duì)象在腳本執(zhí)行的時(shí)候還未被加載到,就會(huì)報(bào)錯(cuò)。原來是 document.getElementById("InputId") 返回了 null 值,而 null 顯然是沒有 value 屬性的,而我那句代碼也用到了 e.value 來取屬性但就沒有報(bào)錯(cuò),原因在于C系列的語言在多個(gè)條件式里的另一外屬性:多個(gè)條件判斷式組合判斷時(shí),先看第一個(gè)條件式,若已經(jīng)符合條件時(shí),就不會(huì)再去判斷第二個(gè)判斷式;也就是在第一個(gè)條件判斷式未達(dá)到標(biāo)準(zhǔn)時(shí)再會(huì)去判斷第二個(gè)判斷式,依此類推直至最后。if (e && e.value!="") 是兩個(gè)判斷式的組合判斷,這是一個(gè)“與”運(yùn)算,只要一個(gè)判斷式為 false 則整個(gè)值都為 false。第一個(gè)判斷式 e 由于不存在或者未加載到返回了 null,而在JS里 null 就等同于 false ,這樣不用后面的判斷也可得到整個(gè)組合判斷的結(jié)果是 false 了,所以系統(tǒng)就不會(huì)再去判斷后面的那句 e.value 了。這點(diǎn)與B系列語言不同,尤其要注意。在B語言中 if e and e.value!="" then 這樣的語句是先把所有的判斷式都運(yùn)算一遍后最后再做組合的“與”運(yùn)算。所以這句代碼在JS里是正確的,若放在VBS里就不一定正確了。

    好了,肚里的貨不多,文筆又比較爛,就寫這么多了,望大家多多指正!

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    javascript里的條件判斷_基礎(chǔ)知識(shí)

    javascript里的條件判斷_基礎(chǔ)知識(shí):JavaScript 是一種可以在瀏覽器中運(yùn)行的腳本語言,是一種弱語言(相對(duì)于C,C#,JAVA而言),只要是計(jì)算機(jī)語言就會(huì)使用到條件判斷式,而JavaScript作為一種弱語言,它的條件判斷常常令人困惑不解,特別是有其它強(qiáng)語言編程經(jīng)歷的人來說,更是不可理喻!高手
    推薦度:
    標(biāo)簽: 判斷 條件 javascript
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产精品福利片免费看 | 国产亚洲美女精品久久久久狼| 久久青青草原精品国产软件| 国产大片91精品免费观看不卡| 欧美日韩精品一区二区三区不卡 | 久久国产精品成人影院| 久久久久成人精品无码| 92国产精品午夜福利免费| 99久久精品国产麻豆| 久久国产精品77777| 一本一本久久aa综合精品| 精品人妻少妇一区二区三区| 91亚洲国产成人久久精品网址| 99久久er这里只有精品18| 日产精品久久久久久久性色| 亚洲级αV无码毛片久久精品| 四虎永久在线精品国产馆V视影院| 国产精品熟女福利久久AV| 9191精品国产免费久久| 欧美日韩精品乱国产538| 国产欧美久久久精品| 6一12呦女精品| 99久久精品国产麻豆| 高清免费久久午夜精品| 91麻豆精品国产自产在线观看一区| 久久综合精品国产二区无码| 野狼第一精品社区| 亚洲愉拍99热成人精品热久久 | 国产精品毛片一区二区| 国产精品久操视频| 国产成人AV无码精品| 成人国产精品动漫欧美一区| 影视网欧洲精品| 国产精品 一区 在线| 99爱在线视频这里只有精品| 99精品在线免费| 国产精品无码一区二区在线| 精品乱码久久久久久夜夜嗨| 久久精品综合一区二区三区| 九色精品视频在线观看| 四虎影视永久在线精品|