2009-12-30 18 views
11

फ़ंक्शन now() में jQuery स्रोत के माध्यम से देखकर मैं निम्न को देखता हूं:जावास्क्रिप्ट में 'नया' मतलब क्या है?

function now(){ 
    return +new Date; 
} 

मैंने प्लस ऑपरेटर को इस तरह के नए ऑपरेटर को प्रीपेड नहीं देखा है। यह क्या करता है?

उत्तर

26

निकोलस और ब्रायन ठीक कह रहे हैं, लेकिन अगर आप यह कैसे काम करता लेकर उत्सुक हैं, +new Date(); के बराबर है (new Date()).valueOf();, क्योंकि unary + operator की इसकी ऑपरेटिंग अभिव्यक्ति का मूल्य प्राप्त करता है, और उसके बाद इसे ToNumber परिवर्तित करता है।

आप किसी भी वस्तु पर एक valueOf विधि जोड़कर एकल + ऑपरेटर का प्रयोग कर एक संख्यात्मक प्रस्तुति अपने वस्तु की वापस जाने के लिए कर सकता है, उदा .:

var productX = { 
    valueOf : function() { 
    return 500; // some "meaningful" number 
    } 
}; 

var cost = +productX; // 500 
+2

+1, अच्छी व्याख्या। –

+1

चूंकि 'valueOf()' एक नंबर लौटा रहा है, उपरोक्त उदाहरण में यूनरी + ऑपरेटर मूल रूप से अनावश्यक नहीं है? मुझे लगता है कि यह मूल्य अधिक होगा यदि valueOf() '500" 'लौटाया गया है। –

+1

@ डेरेल, क्या आप मुझसे अलग कोड उदाहरण देख रहे हैं? मुझे इस पोस्ट में कोई संपादन नहीं दिख रहा है, इसलिए आपकी टिप्पणी स्पर्श और अप्रासंगिक से अजीब तरह से प्रतीत होती है, लेकिन लगभग पोस्ट की तरह टिप्पणी के बाद संपादित किया जा सकता था। – Breton

10

मुझे लगता है कि यूनरी प्लस ऑपरेटर किसी भी चीज़ पर लागू होता है जिससे इसे किसी संख्या में परिवर्तित किया जा सकता है।

+0

हम्म, + हमेशा अभिव्यक्ति एक नंबर में परिवर्तित करता है? + तार और संख्या दोनों के लिए एक वैध ऑपरेटर है। 1 * आमतौर पर एक संख्या में एक तर्क को मजबूर करने के लिए प्रयोग किया जाता है। – Ernelli

+2

@ एर्नेली, + केवल एक वैध स्ट्रिंग ऑपरेटर है जब इसे बाइनरी ऑपरेटर के रूप में उपयोग किया जाता है। यूनरी + ऑपरेटर केवल संख्याओं पर लागू होता है, इसलिए यह वही तरीके से परिवर्तित होता है जो 1 * करता है। –

+1

अर्नेली: नीचे दिए गए सीएमएस का जवाब देखें http://stackoverflow.com/questions/1983040/what-does-the-new-mean-in-javascript/1983109#1983109। यूनरी '+' हमेशा अपने ऑपरेंड को एक नंबर में परिवर्तित करता प्रतीत होता है, जबकि बाइनरी '+' तारों पर उपयोग किया जा सकता है। –

9

यह एक पूर्णांक में Date() बदल देता है, आप 1 जनवरी के बाद से मिलीसेकेंड की वर्तमान संख्या दे रही है, 1970

+0

5 सेकंड बहुत देर हो चुकी है, मैंने निकोलस के लिए मतदान किया है ;-) –

+1

यह लिखते समय मेरा ब्राउज़र क्रैश हो गया! मुझे एक नया ब्राउज़र लॉन्च करना पड़ा ... –

+0

@ ब्रायन आईई समय-समय पर ऐसा करेगा। ;) –

संबंधित मुद्दे