背景说明
我问了一个关于使用循环定义日期数组的问题。
数组是根据名为“dateinterval”的已声明变量定义的。我设计代码的方式导致了与另一个循环相关的错误消息,另一个用户为我提供了另一个循环来解决这个问题。
既然我已经仔细比较了两种不同的解决方案,我就是不明白为什么它们不会产生相同的结果。
我的代码
我开发了以下代码来定义 UTC 格式的日期数组。然而,结果是自 1970 年 1 月 1 日 00:00:00 以来以毫秒为单位的日期数组。换句话说,一个数字。
for (var i=0; i < difference; i++){
dateinterval[dateinterval.length] = dateinterval[0].setDate(datointerval[0].getDate() + i);
};
正确的解决方案
下面的代码是另一位用户提供给我的正确代码(再次感谢您!)此代码定义了一组 UTC 日期。
for (var i = 0; i < difference; i++) {
var dt = new Date(dateinterval[0]);
dt.setDate(dt.getDate() + i);
dateinterval[dateinterval.length] = dt;
};
我不明白的地方
我几乎失明了,因为我盯着这两种不同的解决方案来弄清楚有什么区别,但我就是不明白。
在我未经训练的情况下,这两段代码似乎执行完全相同的操作,唯一的区别在于它们的结构。我被告知 setDate 返回毫秒,并且在我的代码中这些毫秒被分配给数组。但在正确的解决方案中,变量 DT 也被分配了一个 setDate 值 - 据我所知 - 也应该以毫秒为单位。那么为什么这条线:
dateinterval[dateinterval.length] = dt;
没有将毫秒分配给 dateinterval 数组?
任何人都可以向我解释一下,以便我可以更好地理解 Javascript 而不仅仅是复制有效的解决方案吗?
最佳答案
当你这样做时:
dateinterval[dateinterval.length] = dateinterval[0].setDate(datointerval[0].getDate() + i);
您正在将 dateinterval[0].setDate(…) 的返回值分配给 dateinterval[…]。该返回值是 timeclip或 Date 对象的内部时间值(自 1970 年 1 月 1 日起的毫秒数)。参见 ECMA-262 §20.3.4.20 .
所以需要先修改Date:
dateinterval[0].setDate(datointerval[0].getDate() + i);
然后为该对象分配一个引用:
dateinterval[dateinterval.length] = dateinterval[0];
看一个简单的案例可能会有帮助。
// Create a new Date for 2015-01-01
var date = new Date(2015,0,1);
// Change the date to 2015-01-02
var x = date.setDate(2);
// The return value from the method is the internal timevalue
console.log(x);
// Check the timevalue
console.log(new Date(x)); // 2 January, 2015
OP 似乎期望 setDate 返回原始的 Date 对象,但它没有,它返回了 timevalue。如果将 setDate 的返回值转换为日期,则原始函数将起作用:
dateinterval[dateinterval.length] = new Date(dateinterval[0].setDate(datointerval[0].getDate() + i));
然而,这会丢弃原始 Date 对象并创建一个新对象。
关于javascript - 深入理解 : How code structure affects the content of date arrays created with loops,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917374/
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5
我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的
由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A
我很难理解Ruby中sender和receiver的实际含义。它们一般是什么意思?到目前为止,我只是将它们理解为方法调用和获取其返回值的调用。但是,我知道我的理解还远远不够。谁能给我一个Ruby中发送者和接收者的具体解释? 最佳答案 面向对象中的一个核心概念是消息传递和早期概念化,这在很大程度上借鉴了计算的Actor模型。艾伦·凯(AlanKay)创造了面向对象一词并发明了最早的OO语言之一SmallTalk,他拥有voicedregretatusingatermwhichputthefocusonobjectsinsteadofo
rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:
我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan
我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文
我有一个用Rails3编写的站点。我的帖子模型有一个名为“内容”的文本列。在帖子面板中,html表单使用tinymce将“content”列设置为textarea字段。在首页,因为使用了tinymce,post.html.erb的代码需要用这样的原始方法来实现。.好的,现在如果我关闭浏览器javascript,这个文本区域可以在没有tinymce的情况下输入,也许用户会输入任何xss,比如alert('xss');.我的前台会显示那个警告框。我尝试sanitize(@post.content)在posts_controller中,但sanitize方法将相互过滤tinymce样式。例如