V8是否自动解析字符串中的ascii字符
Does V8 automatically parse ascii characters from strings?
我注意到Chrome与Firefox之间存在一些不一致。我基本上是想用我从Dom上刮下来的绳子来创建一个新的约会对象。
// Assume dateString was pull from a Dom node.
var dateString = 'Nov'xa025, 2013';
var date = new Date(dateString);
您会注意到dateString中包含ascii非中断空格字符。因此,当在Chrome控制台中运行时,date==有效日期。另一方面,Firefox不喜欢ascii字符和日期!=有效日期。
补救办法是用实际的空格替换ascii。我很好奇V8是否在为我们清理字符串,而不仅仅是为新的Date()?
否,两种浏览器解析字符串文字的方式相同:
> 'Nov'xa025, 2013'.charCodeAt(3)
160
> 'Nov 25, 2013'.charCodeAt(3)
32
但是,不同浏览器的Date构造函数不同。EMCAScript规范只需要一种日期格式(即YYYY-MM-DDTHH:mm:ss.sssZ
),但实现可以自由支持自定义日期格式:
如果String不符合[EMMAScript defined]格式,则函数可能会回退到任何特定于实现的启发式方法或特定于实施的日期格式。
显然,Chrome支持自定义日期格式,允许不间断的空格,而Firefox没有。
它保持字符串原样,您可以尝试
dateString.charCodeAt(3)
以证实这一点。
相关文章:
- 修改 JavaScript 以使用 ASCII 字符或图像而不是文本
- 使用正则表达式测试字符串中的特定ASCII字符
- 如何将字符串中的ascii字符转换为jquery中的字符
- 使用Jquery仅切换按钮文本中的ASCII字符
- V8是否自动解析字符串中的ascii字符
- 从nodejs-crypto返回的字符串中修剪非ascii字符
- 将ASCII字符替换为等效字符
- 将ascii字符发送到mailto而不达到URL限制的最有效方法
- JavaScript 字符串中的转义控制和非 ASCII 字符(高位)
- 匹配除少数字符之外的 ASCII 字符
- 使字典中的键等于所有 ASCII 字符
- 使用 Javascript/Windows 批处理文件混合将非 ASCII 字符编码为 HTML
- 使用 Javascript REGEX 阻止特定范围的 ASCII 字符
- HTML 标签以 ASCII 字符显示
- Django表单中的非ASCII字符发出警告
- 如何将一组ascii字符转换为字符串
- Regex测试是否只有ASCII字符
- 如何在java脚本中对非ascii字符进行编码
- 编码URI(空格等)而不编码非ASCII字符
- 将2个ASCII字符与javascript进行比较