【问题标题】:es6 template literal in not supporting in firefox browser?es6模板文字在Firefox浏览器中不支持?
【发布时间】:2017-11-03 00:13:12
【问题描述】:

当我在代码下面运行时

let m = "5", d = "5", y = "2015"; new Date(`${d}-${m}-${y}`);

firefox developer Edition v 56 返回无效日期,而 Chrome v 61 返回有效且正确的日期。

2015 年 5 月 5 日星期二 00:00:00 GMT+0530 (IST)

在 FF DE 56 浏览器中不支持 es6 模板文字还是浏览器中对日期格式的定义有所不同?

请提供任何帮助链接。

【问题讨论】:

  • caniuse.com/#feat=template-literals 表明它应该得到支持。控制台输出中是否有任何错误?当您将该字符串输出到控制台时会发生什么?
  • 只有特定的日期格式是标准的一部分,因此是跨浏览器的,而这不是其中之一。
  • 该错误意味着您将无效值传递给Date。该值是否通过模板文字生成并不重要。 (您可以通过尝试new Date('5-5-2015') 轻松验证)
  • @FelixKling 。 new Date('5-5-2015') 也返回 Invalid Date 。见imgur.com/oo3Lr6W

标签: ecmascript-6 browser-support template-literals


【解决方案1】:

这不是由模板文字引起的,这是由非标准日期格式引起的。

在 Firefox Developer's Edition 56 Scratchpad 窗口中:

(new Date(`${d}-${m}-${y}`)).toString()

/*
Invalid Date
*/

(new Date(`${y}-${m}-${d}`)).toString()

/*
Mon May 04 2015 17:00:00 GMT-0700 (Pacific Standard Time)
*/

在这里,使用 DD-MM-YYYY 格式是无效。但是,使用 YYYY-MM-DD 的 standard format 会产生有效日期。

Chrome 似乎允许超出标准的其他格式。不建议使用非标准格式,因为不能保证所有主流浏览器都支持它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-25
    • 2019-05-19
    • 1970-01-01
    • 2016-09-26
    • 2015-02-26
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    相关资源
    最近更新 更多