为什么会这样呢

来源:5-2 月份切换

慕函数2567878

2017-04-18 13:42

月份向前翻,到2016 就不行了,这么回事呢

写回答 关注

5回答

  • TooooBug
    2017-04-20 14:15:39

    会飞的四脚蛇说得对,代码一开始写的时候这里判断有bug。

  • 只有学习才能进步
    2018-05-29 15:59:26

    https://img1.mukewang.com/5b0d08450001364f07160538.jpg

    https://img4.mukewang.com/5b0d0846000106a008200309.jpg

    求老铁们能帮忙解决下,谢谢了

  • 会飞的四脚蛇
    2017-04-19 18:08:46

    if( !year && !month){.....}永远不会执行???

    难道我打开的浏览器姿势不对?麻烦输入代码运行一下先。

    你确定理解 && 和 || 的用法?两个都是短路操作。

    && :第一个运算数的值为真则返回第二个运算数的值,否则返回第一个运算数的值。

    if( !year && !month),除了第一次,其他都是短路操作,直接返回 !year的值,即false. !month 根本不会执行;

    || :第一个运算数的值为真则返回第一个运算数的值,否则返回第二个运算数的值。

    if (typeof year==='undefined'|| typeof month==='undefined') ,先检查typeof year==='undefined'再检查 typeof month==='undefined',除了第一次是短路操作,其他每次都要在检查typeof month==='undefined'。从效率来讲你的方法限定死了参数检查,代码冗余!!!!无谓的运算是可以优化的。

    在说if(!year || !month)为什么就不行呢,因为!year 除了第一次运行是true,其他基本都是false。除了第一次,这个条件判断总是返回 !month 的值,当 month为0时 !month--> !0--> true,会执行这个条件判断后面的语句,即返回当前月份的数据。


    结论:if( !year && !month){.......} 优于if (typeof year==='undefined'|| typeof month==='undefined'){......} ;


    慕莱坞197...

    我的锅

    2017-04-20 09:50:29

    共 1 条回复 >

  • 慕莱坞1975833
    2017-04-19 16:56:41

    if (typeof year==='undefined'|| typeof month==='undefined') {
       var today = new Date();
       year = today.getFullYear();
       month = today.getMonth() + 1;
    }

    使用typeof检查才正确,使用这个if( !year && !month){.....}永远不会执行,因为每次点的时候不会出现年份为0,但是月份会出现0,!0===true,所以你往前切换的时候才会bug,望采纳

    会飞的四脚蛇

    if( !year && !month){.....}永远不会执行??? 难道我打开的浏览器姿势不对?麻烦输入代码运行一下先。

    2017-04-19 17:59:52

    共 1 条回复 >

  • 会飞的四脚蛇
    2017-04-19 16:19:13

    其实是老师的代码有点小错误。

    翻到2017-1,再点month就变为0,

    根据老师datepicker.getMonthData的定义,参数判断

     if(!year || !month)
    {
        var today = new Date();
        year =today.getFullYear();
        month =today.getMonth() + 1;
    }

    改为

    if( !year && !month){.....}

    就可以了。

DatePicker组件开发

使用原生JS完成一个日期选择器(datepicker)组件的开发

17743 学习 · 64 问题

查看课程

相似问题