首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无论是否附加Chrome调试器,日期构造函数的工作方式都不同

无论是否附加Chrome调试器,日期构造函数的工作方式都不同
EN

Stack Overflow用户
提问于 2019-07-14 17:04:35
回答 1查看 184关注 0票数 1

我在这里有个很奇怪的问题。根据我是否附加调试器,JS对new Date("6-1-2013")的评估是不同的。我正在运行一个反应本地应用程序在世博会。

这些是从我的代码中运行以下代码的结果:

代码语言:javascript
运行
复制
console.log('new Date("6-1-2013"),', new Date("6-1-2013"));

使用调试器:

代码语言:javascript
运行
复制
new Date("6-1-2013"), 2013-06-01T04:00:00.000Z

没有调试器:

代码语言:javascript
运行
复制
new Date("6-1-2013"), Date { NaN }

Update:将“2013年6月1日”传递给构造函数,不管是否使用调试器。所以我现在的问题是固定的。

我还是想知道为什么会以不同的方式发生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-14 18:04:07

这是由不同的JavaScript环境造成的。看看docs 这里

JavaScript运行时 当使用Reacti原住民时,您将在两个环境中运行您的JavaScript代码:

  • 在大多数情况下,React将使用JavaScriptCore,这是支持Safari的JavaScript引擎。请注意,在iOS上,JavaScriptCore不使用JIT,因为iOS应用程序中缺少可写的可执行内存。
  • 当使用Chrome调试时,所有JavaScript代码都在Chrome内部运行,通过WebSockets与本机代码通信。Chrome使用V8作为其JavaScript引擎。

虽然这两个环境非常相似,但您可能最终会遇到一些不一致的地方。我们将来可能会在其他JavaScript引擎上进行实验,所以最好避免依赖于任何运行时的细节。

问题是日期构造函数确实很挑剔,所以您需要注意如何创建日期。

一个流行的解决方法是使用moment.js。Moment.js将为您处理背景中的所有日期转换,它将在所有平台、javascript引擎等上工作。

安装moment.js时:

代码语言:javascript
运行
复制
npm --install moment 

然后你可以替换:

代码语言:javascript
运行
复制
 new Date("6-1-2013")

通过以下方式:

代码语言:javascript
运行
复制
import Moment from 'moment';

//second parameter is the specified format of your date string  

const date = Moment("6-1-2013", "M-D-YYYY"); 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57029471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档