इनलाइन आईएफ स्टेटमेंट को जावास्क्रिप्ट में कैसे लिखें?


286

मैं ifजावास्क्रिप्ट में इनलाइन स्टेटमेंट का उपयोग कैसे कर सकता हूं ? क्या इनलाइन elseस्टेटमेंट भी है?

कुछ इस तरह:

var a = 2;
var b = 3;

if(a < b) {
    // do something
}

12
यहाँ jQuery कहाँ है? और मैं वास्तव में वैसे भी सवाल नहीं समझता।
मार्क

jquery हिस्सा इस $ (दस्तावेज़) की तरह हो सकता है। पहले से ही (फ़ंक्शन () {var a = 2; var b = 3; अगर (a <b) {// do}};
टेक इट इज़

यह भी एक
खटखटाने का

1
यह भी एक कोणीय 1 और 2 है और हर दूसरे जेएस फ्रेमवर्क (वेनिला.जेएस सहित) से बाहर का सवाल है
बेन टालियाडोरोस

जवाबों:


641

जरूरी नहीं कि आपको jQuery की आवश्यकता हो। अकेले जावास्क्रिप्ट ऐसा करेगा।

var a = 2;
var b = 3;    
var c = ((a < b) ? 'minor' : 'major');

cचर हो जाएगा minorअगर मूल्य है true, और majorयदि मान है false


यह एक सशर्त (टर्नरी) ऑपरेटर के रूप में जाना जाता है।

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator


59
यह दिखाता है कि इनलाइन IF का उपयोग कैसे किया जाता है, जो इस प्रश्न का सटीक उत्तर देता है।
मैटडब्ल्यू

26
बस ध्यान दें, इस मामले में सभी parens वैकल्पिक हैं। यह अक्सर व्यक्तिगत पसंद / कोडिंग शैली होती है जो उनके उपयोग किए जाने पर निर्धारित होती है।
विल क्लेन

3
@ शेखी, यह एक जावास्क्रिप्ट सवाल है। अभिव्यक्तियों का अन्य भाषाओं में अलग तरीके से मूल्यांकन हो सकता है।
विल क्लेन

1
@MattW यह नहीं दिखाता है कि इनलाइन IF का उपयोग कैसे किया जाता है, यह दिखाता है कि IF IF का उपयोग कैसे करें
Finlay Percy

1
मत भूलना वास्तव में नहीं है, लेकिन आप एक पंक्ति का उपयोग कर सकते हैं यदि कथन यदि आप चाहते हैंif (a < b) c = 'major';
MattW

44

ifस्टेटमेंट इनलाइन लिखने के लिए , इसके अंदर का कोड केवल एक स्टेटमेंट होना चाहिए:

if ( a < b ) // code to be executed without curly braces;

43

एक टर्नरी ऑपरेटर है, जैसे:

var c = (a < b) ? "a is less than b"  : "a is not less than b";

4
यह वास्तव में कुछ भी सौंपा नहीं है। दाहिने हाथ की ओर तत्व बस फ़ंक्शन कॉल कर सकते हैं।
jfriend00

7
उन्हें फ़ंक्शन कॉल भी नहीं करना है ... 0 < 1 : 5 : 120;पूरी तरह से मान्य कथन है। जब तक आपको प्रति पंक्ति भुगतान नहीं किया जाता, तब तक थोड़ा बेकार।
Ry-

ठीक है, @ jfriend00, minitech, सुझावों के लिए धन्यवाद।
महमूद गमाल

@ jfriend00 मैं इसके खिलाफ लगभग सभी मामलों में सलाह दूंगा, हालाँकि। यदि आप अभिव्यक्ति के मूल्य का उपयोग नहीं कर रहे हैं, तो आप वास्तव में क्या चाहते हैं साइड इफेक्ट्स; और दुष्प्रभाव क्या बयानों के लिए महान हैं। ifऐसे मामले में सादे पुराने उबाऊ बयान का उपयोग करना संभवतः आपके कोड को पढ़ने और समझने में बहुत आसान बना देगा, और बाद के परिवर्तनों के साथ टूटने की संभावना कम होगी।
एमिल लुंडबर्ग

35

यदि आप केवल लॉजिकल ऑपरेटर्स का उपयोग कर रहे हैं, तो आप अनुमानित रूप से भी अनुमान लगा सकते हैं।

(a && b) || c

उपरोक्त कहावत के समान है:

a ? b : c

और जाहिर है, के रूप में ही लगभग:

if ( a ) { b } else { c }

मैं मोटे तौर पर कहता हूं क्योंकि इस दृष्टिकोण के साथ एक अंतर है, इसमें आपको यह जानना होगा कि मूल्य का bमूल्यांकन सही होगा, अन्यथा आप हमेशा प्राप्त करेंगे c। मूल रूप से आपको यह महसूस करना होगा कि जो हिस्सा दिखाई देगा, if () { here }वह अब उस स्थिति का हिस्सा है, जिसे आप रखते हैंif ( here ) { }

तार्किक अभिव्यक्ति के गठन के मूल मूल्यों में से एक को पारित / वापस करने के जावा स्क्रिप्ट के व्यवहार के कारण उपरोक्त संभव है, जो ऑपरेटर के प्रकार पर निर्भर करता है। PHP जैसी कुछ अन्य भाषाएं, ऑपरेशन के वास्तविक परिणाम को सही या गलत मानती हैं, जिसका अर्थ है कि परिणाम हमेशा सही या गलत होता है; उदाहरण के लिए:

14 && 0          /// results as 0,  not false
14 || 0          /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4,  not true
true && ''       /// results as ''
{} || '0'        /// results as {}

एक सामान्य लाभ, यदि सामान्य कथन की तुलना में, यह है कि पहले दो विधियाँ तर्क के दाहिने भाग पर काम कर सकती हैं, यानी असाइनमेंट के हिस्से के रूप में।

d = (a && b) || c;
d = a ? b : c;

if `a == true` then `d = b` else `d = c`

एक मानक के साथ इसे प्राप्त करने का एकमात्र तरीका यदि कथन असेंबली की नकल करना होगा:

if ( a ) { d = b } else { d = c }

आप पूछ सकते हैं कि टर्नरी ऑपरेटर के बजाय सिर्फ लॉजिकल ऑपरेटर्स का उपयोग क्यों करें , साधारण मामलों के लिए जो आप शायद नहीं करेंगे, जब तक आप सुनिश्चित नहीं करना चाहते थे और दोनों सच थे। आप लॉजिकल ऑपरेटर्स के साथ अधिक सुव्यवस्थित जटिल परिस्थितियों को भी प्राप्त कर सकते हैं, जो नेस्टेड टर्नरी संचालन का उपयोग करके काफी गड़बड़ हो सकता है ... फिर यदि आप चाहते हैं कि आपका कोड आसानी से पठनीय हो, तो न तो वास्तव में यह सहज है।ab


32

सादे अंग्रेजी में, वाक्य रचना समझाया:

if(condition){
    do_something_if_condition_is_met;
}
else{
    do_something_else_if_condition_is_not_met;
}

के रूप में लिखा जा सकता है:

condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;

5
क्या "और" बयान के बिना ऐसा करना संभव है? यानीcondition ? true
डेविल्स एडवोकेट

@ScottBeeson ज़रूर। यह आपकी स्थिति के उपयोग पर भी निर्भर करता है। true falseऔर ""सभी को दूसरे भाग की उपेक्षा करने के लिए ठीक होना चाहिए।
ओनिमुषा

तो 2 == 2 ? doSomething()क्या ऐसा ही होगा if (2 == 2) doSomething()?
डेविल्स एडवोकेट

1
हां, लेकिन दूसरे भाग को पूरी तरह से छोड़ा नहीं जा सकता है। पट्टे पर होना चाहिए : falseया : ""होना चाहिए क्योंकि जावास्क्रिप्ट यह उम्मीद कर रहा है।
ओनिमुषा

5
ओह। इसलिए बिना बयान के ऐसा करना संभव नहीं है।
डेविल्स एडवोकेट

21
<div id="ABLAHALAHOO">8008</div>
<div id="WABOOLAWADO">1110</div>

parseInt( $( '#ABLAHALAHOO' ).text()) > parseInt( $( '#WABOOLAWADO ).text()) ? alert( 'Eat potato' ) : alert( 'You starve' );

48
मुझे यह भी पता नहीं है कि मैं क्या पढ़ता हूं, लेकिन मैं बहुत मुश्किल से हंस रहा हूं।
जैज

20

यदि आप एक इनलाइन IF (ELSE के बिना) चाहते हैं, तो आप तार्किक और ऑपरेटर का उपयोग कर सकते हैं:

(a < b) && /*your code*/;

यदि आपको ईएलएसई की भी आवश्यकता है, तो टर्नरी ऑपरेशन का उपयोग करें जो अन्य लोगों ने सुझाव दिया है।


17

आप जावास्क्रिप्ट में ऐसा कर सकते हैं:

a < b ? passed() : failed();

8

FYI करें, आप सशर्त ऑपरेटरों की रचना कर सकते हैं

var a = (truthy) ? 1 : (falsy) ? 2 : 3;

यदि आपका तर्क पर्याप्त रूप से जटिल है, तो आप IIFE का उपयोग करने पर विचार कर सकते हैं

var a = (function () {
  if (truthy) return 1;
  else if (falsy) return 2;
  return 3;
})();

बेशक, यदि आप एक से अधिक बार इस तर्क का उपयोग करने की योजना बनाते हैं, तो आप चीजों को अच्छा और डीआरवाई रखने के लिए एक फ़ंक्शन में इसे संक्षिप्त करने के लिए तैयार हैं।


6

मुझे अक्सर प्रति शर्त अधिक कोड चलाने की आवश्यकता होती है, का उपयोग करके: ( , , )कई कोड तत्व निष्पादित कर सकते हैं:

var a = 2;
var b = 3;
var c = 0;

( a < b ?  ( alert('hi'), a=3, b=2, c=a*b ) : ( alert('by'), a=4, b=10, c=a/b ) );

4

इसे जोड़ने के लिए आप इनलाइन का उपयोग भी कर सकते हैं यदि && और || ऑपरेटरों। ऐशे ही

var a = 2;
var b = 0;

var c = (a > b || b == 0)? "do something" : "do something else";

0

अनिवार्य रूप से सवाल नहीं है: क्या मैं निम्नलिखित लिख सकता हूं?

if (foo)
  console.log(bar)
else
  console.log(foo + bar)

उत्तर है, हां, ऊपर अनुवाद होगा।

हालाँकि, निम्नलिखित करने से सावधान रहें

if (foo)
  if (bar)
    console.log(foo)
  else 
    console.log(bar)
else 
  console.log(foobar)

ब्रेसिज़ में अस्पष्ट कोड को लपेटना सुनिश्चित करें क्योंकि ऊपर एक अपवाद फेंक देगा (और इसी तरह के क्रमपरिवर्तन अवांछित व्यवहार पैदा करेगा।)


0

इनलाइन यदि:

(('hypothesis') ? 'truthy conclusion' : 'falsey conclusion')

सत्य निष्कर्ष: परिकल्पना सत्य होने पर निष्पादित बयान

गलत निष्कर्ष: परिकल्पना झूठी होने पर निष्पादित बयान

आपका उदाहरण:

var c = ((a < b) ? 'a<b statements' : '!(a<b) statements');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.