If-other শর্টহ্যান্ড ব্যবহার করার সময় দ্বিতীয় এক্সপ্রেশনটি ছাড়াই


290

আমি if elseছাড়া শর্টহ্যান্ড লিখতে পারি else?

var x=1;

x==2 ? dosomething() : doNothingButContinueCode();   

আমি nullঅন্য কাজগুলি করার জন্য লক্ষ্য করেছি (তবে কেন বা এটি একটি ভাল ধারণা) তবে আমার কোনও ধারণা নেই।

সম্পাদনা: আপনারা কেউ কেউ বিভ্রান্ত বলে মনে করছেন কেন আমি এটি চেষ্টা করে বিরক্ত করছি। আশ্বাস দিন এটি নিখুঁত কৌতূহলের বাইরে। আমি জাভাস্ক্রিপ্টের সাথে ঘোরাঘুরি পছন্দ করি।


আমি মনে করি একটি var | varবাক্য গঠন আছে। "দেখা", বিশেষত (আইএমও) টেরিনারিগুলি সমস্যাযুক্ত হওয়ার কারণে এটি সম্ভবত সম্ভাব্য হিসাবে কঠিন। সতর্কতার সাথে অল্পকরে ব্যবহার করা.
জারেড ফারিশ

@ জারেডফারিশ টেরিনারিগুলির পুরো পয়েন্টটি নয় যে তারা বিবৃতি ব্যবহারের চেয়ে "দেখার" সহজ? এছাড়াও আপনি যে সিনট্যাক্সের কথা বলছেন তা আকর্ষণীয় দেখাচ্ছে।
হাসান

1
না, আমি মনে করি না যে তারা সব ক্ষেত্রেই সহজতর। আমার মনের "সম্পূর্ণ বিষয়" হ'ল হয় এগুলিকে এক লাইনে রেখে দেওয়া ("আমার কোডগুলি আপনার চেয়ে ছোট") বা সরল ফলাফল সহ নির্দিষ্ট, আক্ষরিক ক্ষেত্রে। স্ট্রাকিং টেরিনারিগুলি বিশেষত ক্ষতিকারক এবং কোনও মূল্যে এড়ানো উচিত। :)
জারেড ফারিশ

1
@ হাসান - আমি এমন কিছু দেখেছি foo = bar | cat;, যদি প্রথমটি মিথ্যা হয়? নাল ?, এটি দ্বিতীয় থেকে "পড়ে"। যদিও আমি এটি কেবল দেখেছি এবং এটি ব্যবহার করবেন না।
জ্যারেড ফারিশ

3
@ জ্যারেডফরিশ: এটি a || bবা a && bঅন্যথায় bসর্বদা মূল্যায়ন করা হবে।
কেনেটিএম

উত্তর:


263

এটি একটি বিকল্প:

x==2 && dosomething();

dosomething()x==2সত্য হিসাবে যদি মূল্যায়ন করা হয় কেবল তখনই ডাকা হবে । একে শর্ট সার্কিট বলে

এটি সাধারণত এর মতো ক্ষেত্রে ব্যবহৃত হয় না এবং আপনার সত্যিকারের মতো কোডটি লেখা উচিত নয়। আমি এই সহজ পদ্ধতির উত্সাহিত:

if(x==2) dosomething();

আপনার সব সময় পঠনযোগ্য কোড লিখতে হবে; আপনি যদি ফাইল আকারের বিষয়ে উদ্বিগ্ন হন তবে অনেক জেএস সংক্ষেপকগুলির মধ্যে একটির সাহায্যে এটির একটি সংক্ষিপ্ত সংস্করণ তৈরি করুন। (যেমন গুগলের ক্লোজার সংকলক )


10
ওহ, শর্ট সার্কিট, ঠিক আছে। কোড পাঠযোগ্যতার প্রশংসা করা হয় আমি বেশিরভাগ মধ্যবর্তী বিকাশকারী এবং কিছু "পাকা পেশাদার" মনে করি।
জ্যারেড ফারিশ

2
প্রযুক্তিগতভাবে আপনার ধনুর্বন্ধনীগুলির দরকার নেই: if (1 - 1 === 0) $('.woot').text('Woot!'); আমি পিএইচপি দিয়ে সমস্ত সময় সেই ফর্মটি ব্যবহার করি এবং এখন আমি কফিসক্রিপ্ট গ্রহণ করছি, আমি এটি আমার জাভাস্ক্রিপ্টেও ব্যবহার করি।
হোলেনবেক

5
আমি ব্যক্তিগতভাবে বিশ্বাস করি যদি এটি যদি ছোট হয় তবে একটি ফলাফল যদি সত্য হয় .. এর x_= 2 && ডোজোমথিং () লেখার পক্ষে আরও দ্রুত এবং সহজ;
ডিন মিহান

9
if x==2 && doSomething() || doSomethingElse()
আগস্টন

1
আমি জাভাস্ক্রিপ্ট এই রুবি মত বাক্য গঠন অন্তর্ভুক্ত ইচ্ছুক: doSomething() if x === 2। আমি রুবি মিস করি না, তবে আমি তা মিস করি না।
চাদ জনসন

743

আপনার কাছে যা আছে তা হল টার্নারি অপারেটরের মোটামুটি অস্বাভাবিক ব্যবহার । সাধারণত এটি অন্য কোনও ক্রিয়াকলাপের ভিতরে কোনও বিবৃতি হিসাবে নয়, একটি অভিব্যক্তি হিসাবে ব্যবহৃত হয়, যেমন:

var y = (x == 2 ? "yes" : "no");

সুতরাং, পাঠযোগ্যতার জন্য (কারণ আপনি যা করছেন তা অস্বাভাবিক) এবং এটি যে "অন্য" যা আপনি চান না তা এড়িয়ে চলে, তাই আমি পরামর্শ দেব:

if (x==2) doSomething();

এখানে আমরা সম্পূর্ণ কমান্ড হিসাবে sertedোকানো সমাপ্তি লাইন যুক্ত করতে পারি (আমার উদাহরণ হিসাবে jquery ফেইড ইন এবং ফাংশন ফাংশন ব্যবহার করুন) x == 2? $ (উপাদান) .ফ্যাডইন (): $ (উপাদান) .ফ্যাডইন (); কোনও রিটার্ন ভেরিয়েবল থাকা বাধ্যতামূলক নয় (প্রথম কোডে ভ্যার ওয়াইয়ের মতো)।
2115

1
যুক্তি নিখুঁত হওয়ার জন্য আপনাকে অবশ্যই ট্রিপল "=" চিহ্নগুলি ব্যবহার করতে হবে। যেমন হিসাবে y y = (x === 2? "হ্যাঁ": "না");
ফিনো 21


20

আপনি যদি অন্যটি না করে থাকেন তবে কেন করবেন না:

if (x==2) doSomething();

4
আপনি অন্যটি করলেও আপনি এটি করতে পারেন
নিমিরস্যাক 24'14

14

nullএকটি ত্রৈমাসিক অভিব্যক্তির একটি শাখার জন্য ব্যবহার করা ভাল। এবং জাভাস্ক্রিপ্টে একটি বিবৃতি হিসাবে একটি ত্রৈমাসিক ভাবটি ঠিক আছে।

শৈলীর বিষয় হিসাবে, যদিও আপনি যদি মনে করেন কোনও প্রক্রিয়া শুরু করছেন, তবে..এটি ব্যবহার করে এটি লেখা আরও পরিষ্কার:

if (x==2) doSomething;
else doSomethingElse

বা, আপনার ক্ষেত্রে,

if (x==2) doSomething;

6

এই খুব পুরানো থ্রেডে ছোট সংযোজন ..

আপনি যদি কোনও টার্নারি অপারেটরের সাথে একটি for/ whileলুপের ভিতরে একটি অভিব্যক্তিটির মূল্যায়ন করে থাকেন এবং তার ফলস্বরূপ continueবা করতে চান break- আপনার কোনও সমস্যা হতে পারে কারণ উভয়ই continue& এক্সপ্রেশনbreak নয় , এগুলি কোনও মূল্য ছাড়াই বিবৃতি

এটি উত্পাদন করবে Uncaught SyntaxError: Unexpected token continue

 for (const item of myArray) {
      item.value ? break : continue;
 }

আপনি যদি সত্যিই কোনও ওয়ান-লাইনার চান যা কোনও বিবৃতি দেয়, আপনি পরিবর্তে এটি ব্যবহার করতে পারেন:

  for (const item of myArray) {
      if (item.value) break; else continue;
  }
  • পিএস - এই কোডটি কিছু ভ্রু বাড়াতে পারে। এমনি বলছি.. :)

4

প্রযুক্তিগতভাবে, নাল বা 0 লাগাতে বা সেখানে কিছু র্যান্ডম মান কাজ করে (যেহেতু আপনি রিটার্ন মানটি ব্যবহার করছেন না)। তবে আপনি কেন কনস্ট্রাক্টের পরিবর্তে এই কনস্ট্রাক্টটি ব্যবহার করছেন if? আপনি কোডটি লেখার সময় আপনি যা করার চেষ্টা করছেন এটি খুব কম স্পষ্ট, কারণ আপনি লোককে কোনও বিকল্প হিসাবে বিভ্রান্ত করতে পারেন (আপনার ক্ষেত্রে নাল)।


2

সম্ভবত সবচেয়ে কম (উপর ভিত্তি করে বা অপারেটর এবং তার প্রাধান্য )

x-2||dosomething()

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.