我正在检查两个字符串是否相等而不管它们的大小写和空格。
我正在使用此代码:
var reqstr = 'Test ' ;
var requested_data_one = 'Test ' ;
var checkequality = reqstr.toUpperCase().tri === requested_data_one.toUpperCase().trim();
if(checkequality){
alert('yes');
} else {
alert('no');
}
如上所示,我故意提供tri
而不是trim()
,但为什么不提出错误?这是我的小提琴
如果这是有效的检查,请告诉我。
答案 0 :(得分:4)
因为JavaScript将tri
解释为返回的大写字符串对象的属性。不存在这样的属性,但是如果您尝试检索不存在的属性,JavaScript将不会出错 - 它将仅返回undefined。
"foo".toUpperCase().bar; //undefined
答案 1 :(得分:2)
您的代码将导致tri被视为不存在的属性
var checkequality = reqstr.toUpperCase().tri === requested_data_one.toUpperCase().trim();
但是,如果将tri更改为方法调用,则会出现错误
var checkequality = reqstr.toUpperCase().tri() === requested_data_one.toUpperCase().trim();
// TypeError: reqstr.toUpperCase(...).tri is not a function
答案 2 :(得分:1)
这是因为Javascript
假设它是property
,而在comaprision中,undefined和trim返回false