两个相同的字符串怎么会不相等呢
How do two identical strings not equal each other?
有人给我发了一封电子邮件:
为什么这两个警报都是假的?
alert('a' == 'a');
alert('a' === 'a');
这是的演示
JSFiddle演示
每个的第一个a
实际上不是一个简单的a
。如果您将光标放在它的正后方并按Backspace,则删除"something",然后它返回true
。
我复制了你的a
字符串,这是我运行此代码时得到的:
$a='a';
var_dump($a);
string(4) "a"
看看这里怎么了?字符串长度为4。
此外,这个:
echo base64_encode($a);
退货:
YeKAjA==
当,对于字母为a
的简单字符串,它应该仅为YQ==
。
额外的字符被称为"零宽度非JOINER"。
这是个把戏吗?你用一些特殊的unicode魔法生成了那些a's
吗?我删除了a's
并重新键入它们,现在两个警报都显示true
,因为它们应该是
更新的Fiddle
对于第一个"a"控制台说:
'a'.charCodeAt(0)
97
'a'.charCodeAt(1)
8204
8204似乎是Zero-width非joiner 的unicode值
而第二次:
'a'.charCodeAt(0)
97
'a'.charCodeAt(1)
NaN
不同的字符串是不同的,这是很自然的:)。
相关文章:
- {} + [] 和 [] + {} 结果怎么会不同
- 我怎么会滥用选择器的开头
- 哪里有“;请求”;以及“;响应”;来自,我怎么会发现
- 我刚刚显示的 javascript 变量怎么会立即错误为未定义
- 查找映射值,其中键是数组中的字符串.为什么会这样
- Javascript不会更新或显示系统时间<怎么会
- 当字符串中存在空格时,字符串比较会给出错误的输出
- 在 JavaScript alert() 中打印 EL 字符串 “RP” 会导致 JS 错误“'RP'
- JavaScript 字符串不会显示在页面上
- JavaScript转义字符串不会在C#正则表达式中得到取消转义.取消逃脱()
- 在javascript中替换HTML5视频src字符串不会替换视频
- FLEX ExternalInterface.available检查怎么会失败,但仍然不可用
- 触摸怎么会被拦截,某些元素会执行一些自定义动作,而其他元素会发生通常的行为
- 两个相同的字符串怎么会不相等呢
- Browserify-require()一个组合字符串不会将模块构建到输出脚本中
- 我怎么会有'this'setTimeout参数中的关键字
- 我如何检查一个字符串是否会使用JS使一个有效的html ID
- jquery中的+$.怎么会只有基本的$
- 一个未定义的变量怎么会抛出类型错误?
- 长轮询怎么会有帮助呢?