2011-06-24 13 views
5

1: foo && baz का नतीजा 1 क्यों नहीं है? क्योंकि सच है 1.क्या आप इन दो जावास्क्रिप्ट उदाहरणों को समझा सकते हैं?

var foo = 1; 
var baz = 2; 

foo && baz; // returns 2, which is true 

2: console.log(foo + +bar); में दो प्लस रहे हैं, उनमें से अर्थ क्या है?

var foo = 1; 
var bar = '2'; 
console.log(foo + +bar); 
+0

ये दो बहुत अलग प्रश्न हैं, शायद अलग किया जाना चाहिए। – Orbling

+5

यह जावास्क्रिप्ट jQuery नहीं है। – Jazaret

उत्तर

10

ऐसा इसलिए है क्योंकि && (तार्किक और) ऑपरेटर पिछले संकार्य यह मूल्यांकन किया जाता का मान देता है। चूंकि footrue है, यह bar मूल्यांकन करने के लिए अभिव्यक्ति के परिणाम का निर्धारण करने के लिए है (यह केवल true हो सकता है अगर bar भी true है)।

विपरीत || (तार्किक या) ऑपरेटर के साथ होगा। उस स्थिति में, footrue है, अभिव्यक्ति का परिणाम truebar का मूल्यांकन किए बिना जाना जाता है, इसलिए foo का मान वापस कर दिया जाएगा।

अपने दूसरे प्रश्न के संबंध में, एकल + ऑपरेटर नंबर 2 में स्ट्रिंग '2' कन्वर्ट करने के लिए अनुमति देता है।

2

जावास्क्रिप्ट Short Circuit Evaluation का पालन करता है। तो इसके अनुसार, जावास्क्रिप्ट अंतिम मान देता है यदि दोनों मान सही हैं

4

&& अंतिम मूल्यांकन मूल्य का मूल्य देता है। '& &' एक ऑपरेटर है। समय यह दूसरे शब्दों

0 && 2 //would return 0 because 0 is a falsy value 
12 && 10 && 0 && 100 // would return 0 to 
10 && 123 && "abc" // returns "abc" 

+ में इस

if (something && somethingelse) {} 

की तरह एक संदर्भ में प्रयोग किया में से अधिकांश एक गणितीय ऑपरेटर है, लेकिन यह एक नंबर करने के लिए एक स्ट्रिंग परिवर्तित करने के लिए इस्तेमाल किया जा सकता।

1 + 1 = 2 
1 + '1' = 11 //van damme would like this one 
1 + +'1' = 2 // somce '1' got converted to a number 
+0

+ '1' प्लस से पहले प्लस 1 कन्वर्ट कैरेक्टर है? क्या मैं सही हू? – runeveryday

+1

मुझे नहीं लगता कि यह इसके लिए मायने रखता था, लेकिन यह काम करता है। उदाहरण के लिए आप बस parseInt ('1') का उपयोग कर सकते हैं – meo

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