在JavaScript中检查字符串是否相等的正确方法是什么?
当前回答
还要考虑["foo", "bar"] == "foo,bar"。
其他回答
让我想到这个问题的是填充和空白
检查我的箱子
if (title === "LastName")
doSomething();
标题是"姓"
也许你需要像这样使用修剪函数
var title = $(this).text().trim();
在javascript中实际上有两种方法可以创建字符串。
var str = 'Javascript';这将创建一个基本字符串值。 var obj = new String('Javascript');这将创建一个包装器对象 String类型。 Typeof STR //字符串 Typeof obj //对象
因此,检查是否相等的最好方法是使用===操作符,因为它检查两个操作数的值和类型。
如果你想检查两个对象是否相等,那么使用String.prototype.valueOf是正确的方法。
new String('javascript').valueOf() == new String('javascript').valueOf()
还要考虑["foo", "bar"] == "foo,bar"。
如果知道它们是字符串,则不需要检查类型。
"a" == "b"
但是,请注意字符串对象是不相等的。
new String("a") == new String("a")
将返回false。
调用valueOf()方法将其转换为String对象的原语,
new String("a").valueOf() == new String("a").valueOf()
将返回true
在您完全理解使用==和===操作符的区别和含义之前,请使用===操作符,因为它将避免您出现模糊的(不明显的)错误和wtf。由于内部的类型强制,“常规”==操作符可能会产生非常意想不到的结果,因此始终推荐使用===方法。
要深入了解这一点,以及Javascript的其他“好与坏”部分,请阅读Douglas Crockford先生和他的作品。有一个很棒的谷歌技术谈话,他总结了很多好的信息:http://www.youtube.com/watch?v=hQVTIJBZook
更新:
Kyle Simpson的《You Don’t Know JS》系列非常棒(可以在网上免费阅读)。本系列文章探讨了英语中常被误解的部分,并解释了Crockford建议你避免的“不好的部分”。通过理解它们,你可以正确地使用它们,避免陷阱。
“Up & Going”一书中有一节是关于相等的,具体总结了什么时候使用宽松(==)和严格(===)操作符:
To boil down a whole lot of details to a few simple takeaways, and help you know whether to use == or === in various situations, here are my simple rules: If either value (aka side) in a comparison could be the true or false value, avoid == and use ===. If either value in a comparison could be of these specific values (0, "", or [] -- empty array), avoid == and use ===. In all other cases, you're safe to use ==. Not only is it safe, but in many cases it simplifies your code in a way that improves readability.
对于那些不想花时间去真正理解Javascript的开发人员,我仍然推荐Crockford的演讲——对于那些只是偶尔使用Javascript的开发人员来说,这是一个很好的建议。
推荐文章
- Javascript reduce()在对象
- 在angularJS中& vs @和=的区别是什么
- 错误"Uncaught SyntaxError:意外的标记与JSON.parse"
- JavaScript中的querySelector和querySelectorAll vs getElementsByClassName和getElementById
- 给一个数字加上st, nd, rd和th(序数)后缀
- 如何以编程方式触发引导模式?
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- setTimeout带引号和不带括号的区别
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 用javascript检查输入字符串中是否包含数字
- 如何使用JavaScript分割逗号分隔字符串?
- 在Javascript中~~(“双波浪号”)做什么?
- 谷歌chrome扩展::console.log()从后台页面?
- 未捕获的SyntaxError: