STW*_*STW 596
始终直到您完全理解使用==和===运算符的差异和含义,使用运算符,===因为它将使您免于模糊(非明显)的错误和WTF.==由于内部的类型强制,"常规"运算符可能会产生非常意外的结果,因此使用===始终是推荐的方法.
为了深入了解这一点,以及Javascript的其他"好与坏"部分,请阅读Douglas Crockford先生及其作品.有一个很棒的Google Tech Talk,他总结了很多好的信息:http://www.youtube.com/watch?v = hQVTIJBZook
更新:
凯尔辛普森的" 你不知道的JS系列"非常出色(可以免费在线阅读).该系列进入了语言中常被误解的领域,并解释了克罗克福德建议你避免的"坏部分".通过了解它们,您可以正确使用它们并避免陷阱.
" Up&Going "一书包含有关Equality的部分,以及何时使用loose(==)vs strict(===)运算符的具体摘要:
要将一大堆细节归结为几个简单的小贴士,并帮助您了解是否使用
==或===在各种情况下,这是我的简单规则:
- 如果比较中的任何值(也称为边)可以是
true或false值,则避免==使用===.- 如果在比较中任一值可以是这些特定值的(
0,"",或[]-空数组),避免==和使用===.- 在所有其他情况下,您可以安全使用
==.它不仅安全,而且在许多情况下,它以提高可读性的方式简化了代码.
对于那些不想花时间真正理解Javascript的开发人员,我仍然推荐Crockford的演讲 - 这对于偶尔在Javascript中工作的开发人员来说是个好建议.
Anu*_*rag 193
如果您知道它们是字符串,那么就不需要检查类型.
"a" == "b"
Run Code Online (Sandbox Code Playgroud)
但请注意,字符串对象不相等.
new String("a") == new String("a")
Run Code Online (Sandbox Code Playgroud)
将返回false.
调用valueOf()方法将其转换为String对象的原语,
new String("a").valueOf() == new String("a").valueOf()
Run Code Online (Sandbox Code Playgroud)
将返回真实
ake*_*lec 51
只有一个答案的补充:如果所有这些方法都返回false,即使字符串看起来相等,也可能在一个字符串的左侧或右侧有一个空格.所以,.trim()在比较之前,只需将字符串放在字符串的末尾:
if(s1.trim() === s2.trim())
{
// your code
}
Run Code Online (Sandbox Code Playgroud)
我花了很多时间试图找出问题所在.希望这会对某人有所帮助!
Bas*_*ANI 20
是什么导致我这个问题是padding和white-spaces
检查我的情况
if (title === "LastName")
doSomething();
Run Code Online (Sandbox Code Playgroud)
和头衔是 " LastName"
所以也许你必须使用这样的
trim功能
var title = $(this).text().trim();
Run Code Online (Sandbox Code Playgroud)
小智 15
除非你真的知道强制是如何工作的,否则你应该避免==使用身份运算符===.但是你应该阅读它以了解它是如何工作的.
如果你使用==,你让语言为你做一些类型强制,例如:
"1" == 1 // true
"0" == false // true
[] == false // true
Run Code Online (Sandbox Code Playgroud)
道格拉斯·克罗克福德在他的书中说:
总是更好地使用身份运算符.
Abh*_*hek 12
实际上有两种方法可以在javascript中创建字符串.
var str = 'Javascript'; 这将创建一个原始字符串值.
var obj = new String('Javascript');这将创建一个类型的包装器对象String.
typeof str // string
typeof obj // object
因此,检查相等性的最佳方法是使用===运算符,因为它检查值和两个操作数的类型.
如果要检查两个对象之间的相等性,那么使用String.prototype.valueOf是正确的方法.
new String('javascript').valueOf() == new String('javascript').valueOf()
Run Code Online (Sandbox Code Playgroud)
Objects可以使用JSON.stringyfy()技巧检查字符串。
var me = new String("me");
var you = new String("me");
var isEquel = JSON.stringify(me) === JSON.stringify(you);
console.log(isEquel);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1021686 次 |
| 最近记录: |