不同Node版本导致的Date构造函数问题及解决方法,不同Jquery版本引发的问题解决

今非昔比Node版本导致的Date构造函数难点及缓解方式

2018/07/06 · JavaScript
· Date

初稿出处:
康建云   

多年来在包装时间接选举取组件的单元测试时,为了组织出Date对象,直接动用了默许Date构造函数。自身本地开发,测试均无难点,push远程后,有个别小伙伴在本地跑测试用例时,却手足无措通过,具体报错如下:

图片 1

通过截图新闻,能够起头判断由于Date构造函数重临了差异日期导致,抱着惊愕的千姿百态查阅个各样资料后,竟然发现3个很小的日子构造函数里面不乏,平时协调写起来都是浅尝辄止,未有深切驾驭过。上边将详细介绍这些破案进度,防止各位看客后续重蹈覆辙。

那是近年半年写得最周到的文章了,用JS达成了二个拖拽排序,效果图如下:
图片 2
壹伊始进入项目有了那般的拖拽完结想法,一点端倪未有,请老师兄说那样完结不也许。当时觉得很不满,打算用守旧的法子去完毕。正思考守旧的办法,感觉日子充分,就回去了拖拽的想法上来。终于完结了。其实笔者不是炫耀那些(当然,感兴趣的话,能够QQ9070878九4调换小编,笔者会收拾德姆o上盛传财富大旨),小编想说的是下文。
就在自家达成的还要,师姐帮另二个同伴写了一个守旧方案的德姆o,他实行的是修改的排序。在他机器上演示的时候,当时就觉得很震撼,在他的鼠标滑动下,一知半解了一次代码,望着长长的链式JS,顿生仰慕。当时就想,等连串结了,好好钻研他那几个。
图片 3
二个月后,等来了,闲暇。缘于对JS的生分,很吃力的勉强看懂了代码,运维的时候,飞来了一头昆虫。移动的时候,一直提示无选择项。

那是新近三个月写得最健全的著述了,用JS达成了3个拖拽排序,效果图如下:
图片 4
1开首进入项目有了如此的拖拽完毕想法,一点线索未有,请先生兄说那样完毕不容许。当时认为很不满,打算用守旧的方法去贯彻。正驰念古板的法子,感觉日子足够,就回到了拖拽的想法上来。终于完毕了。其实本人不是炫耀这么些(当然,感兴趣的话,能够QQ9070878九4联络我,作者会收十德姆o上传播能源中央),作者想说的是下文。
就在自家达成的同时,师姐帮另壹个伙伴写了二个观念方案的德姆o,他举办的是修改的排序。在她机器上演示的时候,当时就以为很打动,在他的鼠标滑动下,走马观花了2次代码,望着长长的链式JS,顿生仰慕。当时就想,等类型结了,好好商量他这些。
图片 5
1个月后,等来了,闲暇。缘于对JS的生分,很讨厌的勉强看懂了代码,运营的时候,飞来了壹头昆虫。移动的时候,一贯提醒无采用项。

事先使用的axios是依据promise的,但是IE并未有放置promise,所以要提早install一个promise插件:

题材排查

根据一定做法,出难题后先自个儿本地跑了3回测试用例,未有任何难点,初叶就足以一定是付出条件难题。于是乎就看了下小伙伴nodejs版本号,版本号为陆.拾.0,而团结本地node版本号为10.3.0,于是在区别nodejs命令行下直接执行如下测试用例。

JavaScript

const defaultDate = new Date(‘1995-12-17T03:24:00’);
console.log(defaultDate.toString());

1
2
3
const defaultDate = new Date(‘1995-12-17T03:24:00’);
 
console.log(defaultDate.toString());

推行结果,

Node 6.10.0:

JavaScript

> const defaultDate = new Date(’19玖伍-1二-1七T03:2四:00′) >
console.log(defaultDate.toString()) Sun Dec 1七 19九5 1壹:2肆:00 GMT
+0800(中夏族民共和国家标准准时间)

1
2
3
4
> const defaultDate = new Date(‘1995-12-17T03:24:00’)
> console.log(defaultDate.toString())
 
Sun Dec 17 1995 11:24:00 GMT +0800(中国标准时间)

Node 10.3.0:

JavaScript

const defaultDate = new Date(’19九2-1二-一七T0叁:2四:00′) undefined
console.log(defaultDatae.toString()) Sun Dec 一七 19玖五 0叁:2四:00 核糖霉素T+0800
(中中原人民共和国家标准准时间)

1
2
3
4
const defaultDate = new Date(‘1995-12-17T03:24:00’)
undefined
console.log(defaultDatae.toString())
Sun Dec 17 1995 03:24:00 GMT+0800 (中国标准时间)

到此基本确认了该难点是由Nodejs环境导致的标题。可是为啥会有那样的难题吗,跟着我延续深刻探秘下Date构造函数。

复制代码 代码如下:

复制代码 代码如下:

npm install promise

深深解析

组合难题,提炼出以下小示例,以供深远剖析Date构造函数:

JavaScript

var d1 = new Date(“1995/12/17 00:00:00”); var d2 = new
Date(“1995-12-17T00:00:00”); var d3 = new Date(“1995-12-17T00:00:00Z”);
console.log(d1.toString()); console.log(d2.toString());
console.log(d3.toString());

1
2
3
4
5
6
var d1 = new Date("1995/12/17 00:00:00");  
var d2 = new Date("1995-12-17T00:00:00");
var d3 = new Date("1995-12-17T00:00:00Z");
console.log(d1.toString());
console.log(d2.toString());
console.log(d3.toString());

nodejs ⑩.三.0履行结果:

JavaScript

> console.log(d一.toString()); Sun Dec 壹七 1995 00:00:00 卡那霉素T+0800
(中华夏族民共和国家标准准时间) > console.log(d二.toString()); Sun Dec 一柒 1995 00:00:00
金霉素T+0800 (中夏族民共和国标准时间) > console.log(d三.toString()); Sun Dec 17 1九九308:00:00 土霉素T+0800 (中国家标准准时间)

1
2
3
4
5
6
> console.log(d1.toString());
Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
> console.log(d2.toString());
Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
> console.log(d3.toString());
Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)

nodejs 陆.十.0执行结果:

JavaScript

> console.log(d壹.toString()); Sun Dec 1七 19九伍 00:00:00 地霉素T+0800
(中中原人民共和国标准时间) > console.log(d二.toString()); Sun Dec 17 19九5 0八:00:00
GMT+0800 (中中原人民共和国家标准准时间) > console.log(d3.toString()); Sun Dec 1七 一九九四0捌:00:00 培洛霉素T+0800 (中夏族民共和国家标准准时间)

1
2
3
4
5
6
> console.log(d1.toString());
Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
> console.log(d2.toString());
Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)
> console.log(d3.toString());
Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)

为何在不一致条件下Nodejs的辨析行为分歧等吧?那就要提下JS中涉嫌到时间的连带规范了。

for(var j = 0; j < div_count; j++){ 
           
if(($(“#不同Node版本导致的Date构造函数问题及解决方法,不同Jquery版本引发的问题解决。eva_div_all”).children().eq(j).children().children().eq(0).attr(‘checked’))==’checked’){ 
                var valid_checked =
$(“#eva_div_all”).children().eq(j).children().children().eq(0).attr(‘id’); 
               
if(valid_checked==checked_name){alert(alert_des);return;} 
                /* 对调 */ 
                var temp =
$(“#eva_div_all”).children().eq(j).attr(‘id’); 
                var temp_html = $(“#”+temp).html(); 
                var before_temp =
$(“#eva_div_all”).children().eq(j+num).attr(‘id’); 
                var before_temp_html = $(“#”+before_temp).html(); 
                $(“#”+temp).html(”); 
                $(“#”+before_temp).html(”); 
                $(“#”+temp).html(before_temp_html); 
                $(“#”+before_temp).html(temp_html); 
                checked = ‘true’; 
                new_order(); 
            } 
        } 
        if(checked==’false’){ 
            alert(‘无选拔项!!’); 
        }

for(var j = 0; j < div_count; j++){ 
           
if(($(“#eva_div_all”).children().eq(j).children().children().eq(0).attr(‘checked’))==’checked’){ 
                var valid_checked =
$(“#eva_div_all”).children().eq(j).children().children().eq(0).attr(‘id’); 
               
if(valid_checked==checked_name){alert(alert_des);return;} 
                /* 对调 */ 
                var temp =
$(“#eva_div_all”).children().eq(j).attr(‘id’); 
                var temp_html = $(“#”+temp).html(); 
                var before_temp =
$(“#eva_div_all”).children().eq(j+num).attr(‘id’); 
                var before_temp_html = $(“#”+before_temp).html(); 
                $(“#”+temp).html(”); 
                $(“#”+before_temp).html(”); 
                $(“#”+temp).html(before_temp_html); 
                $(“#”+before_temp).html(temp_html); 
                checked = ‘true’; 
                new_order(); 
            } 
        } 
        if(checked==’false’){ 
            alert(‘无采纳项!!’); 
        }

import Promise from ‘promise’;
if (!window.Promise) {
window.Promise = Promise;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图