JS中物件和變數是否可以作為if選擇結構的條件?

2021-06-19 16:10:43 字數 2100 閱讀 7264

由於js很菜,工作中看別人寫的js**,發現很多都是自己沒見過沒想過的。有段時間發現別人把乙個方法或者物件作為if選擇結構的條件,感到很疑惑?方法和物件也可以作為if選擇結構的條件嗎?

然後一直想去驗證,但是都很懶,沒去行動;有一天去測試過了,當時是明白這些是不是可以作為if選擇結構,但是過了一段時間後,發現自己又把這些驗證過的東西給忘了,記不起來了。

所以今晚又來測試一下js中方法和物件是不是可以作為if選擇結構的條件,並且把測試結果記錄下來。古人言:好記性不如爛筆頭。此話誠不欺我也!

測試開始了:

html頁面中有乙個標籤:

下面是js測試**:

function testif() catch (e)

try catch (e)

//測試js和jqeury獲取的不存在的物件能否用物件的屬性

try catch (e)

try catch (e)

var str1; var str2 = null, str3 = "", str4 = undefined; str5 = "nihao";

if (btn) else if(!btn)

if (btn0) else if(!btn0)

if (btn2) else if(!btn2)

if (btn3) else if (!btn3)

alert('btn2==undefined---》 ' + (btn2 == undefined) + ' , btn2==null--》' + (btn2 == null)

+ "\nbtn==true -- > " + (btn == true) + "\nbtn0==true -- > " + (btn0 == true) +

"\nbtn3==true -- > "+(btn3==true)+"\nbtn2==true -- > "+(btn2==true));//結果物件==true的結果都是false

if (str3) else if(!str3)

if (str1) else if(!str1)

str1 = function () //賦值

if (str1) else if(!str1)

if (str5) else if (!str5)

var str6 = "   "; //空格

if (str6) else if (!str6)

var str7 = null, str8 = "", str9 = undefined;

alert("str5==true -- >" + (str5 == true) + "\nstr8==true --> " 

+ (str8 == true) + "\nstr9==true --> " + (str9 == true));//結果都是false,很奇怪;按理來說既然既然str5可以作為if條件,那麼和true相比應該是true才對,事實不是如此}

現在把剛才的測試結果統計一下:

1、js獲取的存在的物件、jquery獲取存在或者不存在的物件、賦值不為空(可以為空格,不能是『』或者「」)、方法都可以作為 if 選擇結構的條件。即把他們作為 if 條件都能進入if大括號裡面

2、js獲取的不存在物件、變數為null 或者 為 undefined、或者變數為『』 或者 「」 不能作為 if 選擇結構的條件;表現有點類似false了

3、這些物件、變數、方法和布林型別比較都是false,比如 var   str="nihao";  這個str變數作為 if  選擇結構的條件表現為true,可以進入 if  選擇結構,但是str==true 的結果為false

4、js獲取不存在物件,呼叫該物件的屬性,會報錯,異常;而jquery獲取的不存在的物件,呼叫該物件的屬性不會報錯報異常。

5、jquery獲取的物件不管該物件是否存在,它作為 if  條件都會為true,這就沒什麼意義了。所以如果想把jquery獲取的物件作為if判斷條件,即想判斷該物件是否存在,則可以用物件.length這個屬性來判斷,物件存在則呼叫length屬性返回的值至少為1(表示存在乙個物件,大於1就表示有多個物件存在),物件不存在則length結果為0

暫時只測到這裡了,路漫漫其修遠兮,我將上下而求索,加油吧,路還有很遠!

重新上傳

取消

C 中vector可以作為map的鍵值

因為專案中需要根據狀態找到乙個對應的結果,就採用了map的結構,但是狀態本身較為複雜,存在乙個vector中。上次使用map的經驗是自定義類型別作為鍵值必須過載 操作符,因為map的快速查詢是基於紅黑樹的構建,因而鍵值必須能相互之間比較。所以擔心vector作為類型別的鍵值會引發一些錯誤,就寫了乙個...

自定義型別是否可以作為Map的Key問題

雖說經常用map,但是我用它的時候,key都是用string或者integer型別,今天偶然想到,可不可以用自己定義的物件作為map的key呢?talk is cheap give me code class student public student string name,string pub...

js物件和變數

var person 物件屬性有兩種定址方式 name person.lastname name person lastname 訪問物件方法 返回函式執行結果 person.fullname john doe訪問 person 物件的 fullname 屬性 返回函式表示式 person.full...