【发布时间】:2012-11-21 19:54:21
【问题描述】:
考虑这个字符串:
var s = "A\0Z";
它的长度是 3,由 s.length 给出。使用console.log,你可以看到字符串没有被剪断,s[1] 是"",s.charCodeAt(1) 是0。
当您在 Firefox 中提醒它时,您会看到 AZ。当您在 Chrome/Linux 中使用 alert(s) 提醒它时,\0 会终止字符串,您会看到 A。
我的问题是:应该 浏览器和 Javascript 引擎做什么? Chrome 在这里有问题吗?是否有文件定义应该发生什么?
因为这是一个关于标准的问题,所以需要参考。
【问题讨论】:
-
在 Chrome 23 控制台中我看到了
AB。 -
@JamesAllardice 是的,如果你写 console.log(s, s.length, s[0], s[1], s[2]) 你会看到整个字符串。 Chrome 中的问题是在使用
alert(s)时。 -
@dystroy
alerts 非常依赖于操作系统,实际上没有办法在浏览器之间实现标准化 -
肯定可以。通过遵循标准。 \0 不是可识别的转义字符 :)
-
你真的在 Windows 或 Linux 上使用 Chrome 吗?也许不同的窗口管理器对待
\0的方式不同,你可能看到不同的结果...
标签: javascript string google-chrome unicode null-terminated