代码大战:为什么这个函数对空格和数字起作用?



我需要检查两个字符串是否在相同的情况下。对于这个问题,我有自己的解决方案,但是我发现了这个版本,我不明白它是如何工作的:

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}

我知道这个检查对数字字符和空格有效,但是我不明白为什么它会起作用,因为它不考虑这些项目。

我的问题:为什么这个函数对非字母和数字甚至空白都有效?

非字母未被toUpperCasetoLowerCase修改。试着想象一个小写的9。这是因为所有这些函数所做的都是将单个字母字符替换为它们的大写或小写等价物。

因此,该代码段基本上只是检查字符串是否完全由非字母字符组成(因为924 "在大写或小写中是相同的,但是a123在大写和小写中不相同,因此if语句将失败)。

相关内容

最新更新