亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么會這樣呢

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

正在回答

5 回答

會飛的四腳蛇說得對,代碼一開始寫的時候這里判斷有bug。

0 回復 有任何疑惑可以回復我~

https://img1.sycdn.imooc.com//5b0d08450001364f07160538.jpg

https://img1.sycdn.imooc.com//5b0d0846000106a008200309.jpg

求老鐵們能幫忙解決下,謝謝了

0 回復 有任何疑惑可以回復我~

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'){......} ;


2 回復 有任何疑惑可以回復我~
#1

慕萊塢1975833

我的鍋
2017-04-20 回復 有任何疑惑可以回復我~

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,望采納

0 回復 有任何疑惑可以回復我~
#1

會飛的四腳蛇

if( !year && !month){.....}永遠不會執行??? 難道我打開的瀏覽器姿勢不對?麻煩輸入代碼運行一下先。
2017-04-19 回復 有任何疑惑可以回復我~

其實是老師的代碼有點小錯誤。

翻到2017-1,再點month就變為0,

根據老師datepicker.getMonthData的定義,參數判斷

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

改為

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

就可以了。

2 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么會這樣呢

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號