2012-04-10 15 views
8

संभव डुप्लिकेट:
What is the “double tilde” (~~) operator in JavaScript?~~ जावास्क्रिप्ट/node.js में क्या करता है?

मैं एक Node.js लायब्रेरी के स्रोत में कोड के इस स्निप पाया। पर input चर पर क्या प्रभाव है?

inArray[3] = ~~input; 

यह भी अन्य तरीकों से किया जाता है:

return ~~ ((a - b)/864e5/7 + 1.5); 
+9

कोड को पढ़ने में भ्रमित कोड बनाता है -_-। मुझे नफरत है कि लोग हाल ही में यह कैसे कर रहे हैं; यह मुझे बहुत गुस्से में डाल देता है। – Domenic

+1

हे, यह डबल '!!' –

+0

@ जेसनबार की तुलना में और भी परेशान नहीं है ~~, लेकिन मैंने देखा :(किसी कारण से "डबल टिल्डे" कभी मेरे लिए नहीं हुआ! :) – Kato

उत्तर

13

~ ऑपरेटर अपनी संकार्य के टुकड़े flips। इसका उपयोग दो बार बिट्स को फ़्लिप करता है, फिर उन्हें फिर से फ़्लिप करता है, ऑपरेटिंग के बराबर एक मानक जावास्क्रिप्ट मान लौटाता है, लेकिन पूर्णांक रूप में। यह parseInt(myInt) के लिए लघुरूप है।

+0

धन्यवाद! मुझे लगा कि यह इस तरह का कुछ होगा। किसी कारण से, मैं यह नहीं समझ पाया कि Google को कैसे करें; अधिक चाय की आवश्यकता होनी चाहिए :) – Kato

+0

कोई समस्या नहीं, Google ऑपरेटरों के लिए अपने प्रश्न पर मेरी टिप्पणी देखें। : पी –

+0

@Kato "tilde जावास्क्रिप्ट" के लिए Google पर खोजें और दबाएं मैं भाग्यशाली महसूस करता हूं: http://dreaminginjavascript.wordpress.com/2008/07/04/28/ – andlrc

1

यह एक पूर्णांक के लिए मूल्य बदल देता है।

9

यह मूल्य को छोटा करने के लिए एक हैकिश तरीका है, Math.floor की तरह थोड़ा सा, सिवाय इसके कि यह नकारात्मक संख्याओं के लिए अलग-अलग व्यवहार करता है। उदाहरण के लिए, truncating -15.9 (~~-15.9) -15 देता है, लेकिन फर्श यह हमेशा निम्नतम संख्या की ओर घूमता है, इसलिए Math.floor(-15.9)16 देगा।

इसे करने का एक और तरीका is to OR with zero

var a = 15.9 | 0; //a = 15 
+0

पुन: नकारात्मक मूल्यों के लिए अलग-अलग - कैसे? – Kato

+0

@ काटो ने पोस्ट करने के लिए स्पष्टीकरण जोड़ा। –

+0

ऐसा लगता है कि ~~ Math.floor से काफी तेज है; यह नहीं कि ज्यादातर मामलों में बात करना पर्याप्त है। – Kato

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