मैं jQuery 1.7.1 का उपयोग कर रहा हूं
मैं सरल / यदि कथनों को बदलने के लिए जावास्क्रिप्ट टर्नरी ऑपरेटर का उपयोग करना शुरू कर रहा हूं। मैंने कई स्थानों पर सफलतापूर्वक किया है। मुझे आश्चर्य हुआ जब मैंने सफलतापूर्वक कुछ और काम किया जब मुझे लगा कि यह सुनिश्चित नहीं होगा, लेकिन मैंने वैसे भी कोशिश की।
यहाँ मूल कथन है:
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
if (IsChecked == true){
removeItem($this);
} else {
addItem($this);
}
}
यहाँ एक ही कार्य टर्नेरी ऑपरेटर का उपयोग कर रहा है:
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
(IsChecked == true) ? removeItem($this) : addItem($this);
}
मैं आश्चर्यचकित था क्योंकि मेरे द्वारा देखे जा रहे सभी उदाहरण केवल इस तरह चर सेट कर रहे थे:
x = (1 < 2) ? true : false;
मेरा सवाल यह है कि क्या यह "सामान्य" उपयोग है और क्या यह जावास्क्रिप्ट के अधिकांश संस्करणों में काम करेगा? कहां फेल होगा? क्या इसके लिए अन्य कम स्पष्ट उपयोग हैं?
अद्यतन - "वास्तविक दुनिया" सलाह के लिए धन्यवाद !!!
मैं इसे अपने फ़ंक्शन के रूप में उपयोग कर रहा हूं:
function updateItem() {
$this = $(this);
$this.hasClass("IsChecked") ? removeItem($this) : addItem($this);
}
(IsChecked ? removeItem : addItem)($this)। हालांकि, आपके प्रश्न का उत्तर देने के लिए, हाँ यह सामान्य है और जब तक कि उन्हें उस स्थिति में स्थिरता या पठनीयता से अलग नहीं किया जाता है, तब तक टर्नरी ऑपरेटरों का उपयोग करने में कुछ भी गलत नहीं है। jsfiddle.net/vsB3f
if($this.hasClass("IsChecked")) removeItem($this); else addItem($this)उचित तरीका है। टर्नेरी ऑपरेटर इस तरह के मामलों के लिए नहीं है, लेकिन चीजों के लिए है, जैसे कि foo(isChecked ? 'bar' : meow());(जब आप तत्कालीन / अन्य ब्लॉकों में जो भी करते हैं उसके "वापसी मूल्य" की परवाह करते हैं)
$(this).hasClass("IsChecked") ? removeItem($this) : addItem($this); मैं आपके कोड को समझ सकता हूं-एक पंक्ति में है, इसलिए यह मेरे अंगूठे के नियम को फिट करता है (नीचे पोस्ट देखें)। मेरे लिये कार्य करता है।