javascript 時間對象加減數字的問題

今天發現一個有Javascript時間對像的一個有趣的問題:

時間對像+一個數字時,時間對像被轉換成一個時間字符串,數字也被轉換成一個字符串,+加相當於字符串連符:

let d = new Date(); //2019-11-20T12:39:09.521Z

console.log(d+86400*1000); //Wed Nov 20 2019 20:39:09 GMT+0800 (GMT+08:00)86400000

但減去一個數字時,時間對象會被轉換成一個毫秒錶示的UNIX時間戳,-號作爲數學動算符與後面的數字做減法操作:

let d = new Date(); //2019-11-20T12:39:09.521Z

console.log(d-0); //1574253549521

console.log(d-'asdf'); //NaN

結論:

時間對象後邊有+操作符時,+號優先被看作是字符串連接符,連接之前,解釋器先調用時間對象的toString()方法,再與後邊操作數進行字符串連接運算;

時間以象後邊有-操作符並且右操作數是數字時(右操作數非數字時,結果爲NaN),-號被看作是算術運算符,解釋器先調用時間對象的getTime()方法,再與後邊操作數進行減法數學運算

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章