运行变量是NaN,但调试变量不是NaN。为什么?

时间:2018-02-15 01:19:17

标签: javascript reactjs firebase react-native redux-thunk

为什么eventFace.order是NaN运行而eventFace.order不是NaN调试? 错误: error_running

let update = true;
const farAway = new Date(GetToday(500)).getTime();

for (const eventFace of facebookEvents) {
  update = true;
  for (const eventFire of firebaseEvents) {
     if (eventFace.id === eventFire.id) {
       update = false;
     }
  }

  if (update) {
    const eventDate = new Date(FormatDate(eventFace.start_time)).getTime();
    eventFace.order = farAway - eventDate;
    firebase.database().ref().child('events').push(eventFace);
  }
}

1 个答案:

答案 0 :(得分:1)

使用React Native时,您将在两个环境中运行JavaScript代码:

在iOS模拟器和设备上,Android模拟器和设备React Native使用JavaScriptCore,它是为Safari提供动力的JavaScript引擎。在iOS上,由于iOS应用程序中缺少可写的可执行内存,JSC不使用JIT

使用Chrome调试时,它会运行Chrome中的所有JavaScript代码,并通过WebSocket与本机代码进行通信。所以你使用的是V8。因此,最好使用momentJS之类的替代品而不是Date object.Like

moment(FormatDate(eventFace.start_time), "MM-DD-YYYY Z").valueOf()

注意:FormatDate现在应该将日期转换为时刻格式" MM-DD-YYYY Z"

您可以查看以下文章了解更多信息。

https://medium.com/@suyogkrazz/you-should-not-always-rely-on-remote-debugging-react-native-787a850c7ad8