先說結論,1.首先要注意0。 if(0)在js中,if的代碼塊是不會執行的。 2. java背景傳來存在null的字段,假設 let test = null ; tyepeof test ,輸出的是 object,而不是undefined。 是以判斷的時候 ,不要用 if (typeof test != 'undefined' ),要寫成 if (test != undefined )
-
第一個錯誤
今天寫了一段代碼,有四個輸入框,分别是上限值,上限範圍(< 或 <=),下限值,下限範圍( > 或 >=)。範圍使用1、2代替。
他們的關系是:有上限值必有上限範圍,有下限值必有下限範圍,反之亦然。必須有上限值或下限值,使用js判斷。
// testUp - 上限值 , testUpRange - 上限範圍 , testDown - 下限值 , testDownRange - 下限範圍
if(testUp && !testUpRange){
message.error("有上限值時必須填寫上限值範圍")
return;
}
if(testDown && !testDownRange){
message.error("有下限值時必須填寫下限值範圍")
return;
}
if(!testUp && testUpRange){
message.error("有上限範圍時必須填寫上限值")
return;
}
if(!testDown && testDownRange){
message.error("有下限範圍時必須填寫下限值")
return;
}
if(!testUp && !testDown){
message.error("必須填寫上限或下限")
return;
}
輸入一種情況:上限值20,上限範圍<;下限值0,下限值範圍未輸入,未提示 “有下限值時必須填寫下限範圍”,并儲存成功。
首先輸出testDown,testDownRange,發現testDown輸出0,testDownRange輸出null(背景-java傳送的資料),以為js沒有判斷null,故編寫以下代碼:
if(!testDownRange){
console.log(testDownRange)
}
發現testDownRange 輸出為 undefined,有點想不通,又編寫以下代碼:
if(testDown){
console.log(testDown)
}
發現沒有輸出testDown!!!!
突然想起來,testDown是0,js中,如果直接使用變量進行判斷,即使該變量不是undefined,是0,也會判為false。
以後做這種判斷時切記!!!!!
-
第二個錯誤
代碼改成下面的了:
if( typeof testUp != 'undefined' && !testUpRange){ message.error("有上限值時必須填寫上限值範圍") return; } if( typeof testDown != 'undefined'&& !testDownRange){ message.error("有下限值時必須填寫下限值範圍") return; } if( typeof testUp == 'undefined'&& testUpRange){ message.error("有上限範圍時必須填寫上限值") return; } if( typeof testDown == 'undefined'&& testDownRange){ message.error("有下限範圍時必須填寫下限值") return; } if( typeof testUp == 'undefined'&& typeof testDown == 'undefined'){ message.error("必須填寫上限或下限") return; } if(!testUpRange && !testDownRange){ message.error("必須填寫上限範圍或下限範圍") return; }
一條資料,有上限值和上限範圍,沒有下限值和下限範圍。點選編輯,儲存,發現提示: “有下限值時必須填寫下限值範圍”。