Javascript V8是否自动解析字符串中的ascii字符?
我注意到Chrome和Firefox之间存在一些不一致之处。我基本上是想用从Dom中刮下的字符串创建一个新的日期Javascript V8是否自动解析字符串中的ascii字符?,javascript,google-chrome,firefox,v8,Javascript,Google Chrome,Firefox,V8,我注意到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不喜
// 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是否在为我们清理字符串,而不仅仅是为new Date()?它让字符串保持原样,您可以试试
dateString.charCodeAt(3)
要确认这一点。否,两种浏览器都以相同的方式解析字符串文字:
> 'Nov\xa025, 2013'.charCodeAt(3)
160
> 'Nov 25, 2013'.charCodeAt(3)
32
但是,不同浏览器的日期构造函数不同。EMCAScript规范(即,YYYY-MM-DDTHH:MM:ss.sssZ
)但是:
如果字符串不符合[ECMAScript defined]格式,函数可能会退回到任何特定于实现的启发式或特定于实现的日期格式
显然,Chrome支持自定义日期格式,允许不间断空格,而Firefox不支持。。。这意味着V8和Firefox之间的区别在于日期构造函数(和/或
Date.parse()
,或其他)。