为什么会这样呢
月份向前翻,到2016 就不行了,这么回事呢
月份向前翻,到2016 就不行了,这么回事呢
2017-04-18
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'){......} ;
举报