當我創建變量時,在等號後不使用括號。這個javascript變量是什麼意思?
爲什麼此代碼在等號後使用括號?任何人都可以解釋嗎?我想知道在等號後什麼意思。
var start = (new Date).valueOf(),
當我創建變量時,在等號後不使用括號。這個javascript變量是什麼意思?
爲什麼此代碼在等號後使用括號?任何人都可以解釋嗎?我想知道在等號後什麼意思。
var start = (new Date).valueOf(),
此方法返回以毫秒爲單位的日期對象的等價性。
毫秒錶示爲一個整數,表示1970年1月1日午夜(GMT)到Date對象中指定的日期和時間之間的毫秒數。
的paranthesis各地new Date
原因是先計算的,所以日期被創建,然後調用新創建的日期valueOf
。
這基本上就像做
var d = new Date();
var start = d.valueOf();
但在一行。
但是,它應該是(new Date()).valueOf()
。現在有什麼是錯誤的。
簡單的事情。 new Date
返回一個日期。沒有括號,它將是new Date.valueOf()
。由於Date
沒有方法valueOf()
,因此會導致錯誤。
但是,Date的一個實例有這個功能。所以我們使用括號。 (new Date).valueOf()
相同
var start = new Date;
start.valueOf();
的這個意圖是縮短了下面的代碼:
var date = new Date();
var start = date.valueOf();
,但你不能寫:
var start = new Date().valueOf();
,因爲世界上沒有Date().valueOf()
,可以用來作爲構造,所以你」將不得不添加大括號。大括號中的部分將首先執行(創建一個新的日期),並且valueOf()
將被調用大括號中的代碼結果(讀取:在構建日期)。這就是說,該解決方案是我們在你的問題有:
var start = (new Date).valueOf();
這一切的結果是毫秒時間戳。
new Date
周圍的包裝物將評估創建Date對象的調用,然後調用日期對象的方法 - >valueOf
。的更容易理解的例子是
(3 + 2) + 2; // = 7 - evaluates 5 then adds 2
在定義valueOf
方法爲:
返回Date對象的原始值。重寫Object.prototype.valueOf方法。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date
實際上,你可以實現通過
var start = +(new Date())
// returns the integer value of the date (in milliseconds)
// aka the primitive value
同樣的事情,你的意思的valueOf()函數自動轉換Date對象到毫秒? – dgwkgg