我需要檢查兩個字串是否相同。我對這個問題有自己的解決方案,但我找到了這個版本,但我不明白它是如何/為什么作業的:
function sameCase(a, b){
if(a.toUpperCase() === a.toLowerCase() || b.toLowerCase() === b.toUpperCase()){
return -1
}else if(a === a.toLowerCase() && b === b.toLowerCase() || a === a.toUpperCase() && b === b.toUpperCase()){
return 1
}else{
return 0
}
}
特別是這個if宣告:
if(a.toUpperCase() === a.toLowerCase() || b.toLowerCase() === b.toUpperCase()){ return -1}
我知道此檢查適用于數字字符和空格,但我不明白為什么會這樣,因為它看起來并沒有考慮到這些專案。
我的問題:為什么這個函式對非字母和數字甚至空白起作用?
uj5u.com熱心網友回復:
非字母不被toUpperCase或修改toLowerCase。試著畫一個小寫字母9或 . 那是因為所有這些函式所做的就是用它們的大寫或小寫等價物替換單個字母字符。
因此,該代碼段基本上只是檢查字串是否完全由非字母字符組成(因為924 "大寫或小寫都相同,但是a123大寫和小寫都不相同,因此該if陳述句會失敗)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/488501.html
標籤:javascript 细绳
