জাভাস্ক্রিপ্ট বা (||) ভেরিয়েবল অ্যাসাইনমেন্টের ব্যাখ্যা


351

জাভাস্ক্রিপ্টের এই স্নিপেট দেওয়া হয়েছে ...

var a;
var b = null;
var c = undefined;
var d = 4;
var e = 'five';

var f = a || b || c || d || e;

alert(f); // 4

এই কৌশলটি কী বলে কেউ দয়া করে আমাকে ব্যাখ্যা করতে পারেন (আমার সেরা অনুমান এই প্রশ্নের শিরোনামে রয়েছে!)? এবং কিভাবে / কেন এটি ঠিক কাজ করে?

আমার বোধগম্যতা হল যে ভেরিয়েবলটি fপ্রথম চলকের নিকটতম মান (বাম থেকে ডানে) বরাদ্দ করা হবে যার মান এমন হয় যা শূন্য বা অপরিজ্ঞাত নয়, তবে আমি এই কৌশল সম্পর্কে খুব বেশি রেফারেন্স উপাদান খুঁজে পেতে পারি নি এবং আছে এটা অনেক ব্যবহৃত দেখেছি।

এছাড়াও, এই কৌশলটি কি জাভাস্ক্রিপ্টের সাথে নির্দিষ্ট? আমি জানি পিএইচপি তে অনুরূপ কিছু করার ফলে নিজের fমানের চেয়ে সত্যিকারের বুলিয়ান মান হবে d


4
প্রাচীন প্রশ্ন হচ্ছে, কিন্তু পিএইচপি সংক্রান্ত, একটি কনস্ট্রাক্ট আপনি ব্যবহার করতে পারেন হল: $f=$a or $f=$b or $f=$c; // etc। পিএইচপি-তে ||অপারেটর এবং অপারেটর উভয়ই থাকে or, যা একই কাজ করে; যাইহোক পূর্বে মূল্যায়ন করার পরে অ্যাসাইনমেন্ট পরেor মূল্যায়ন করা|| হয়। এটি আপনাকে মার্শাল স্টাইলটি দেয়$a=getSomething() or die('oops');
মানঙ্গো

1
পিএইচপি 5.3 এ আপনি তার থেকে ভিত্তি করে টার্নারি অপারেটরের মাঝের অংশটি ছেড়ে দিতে পারেন ... আপনি এটিকে কিছুটা ছোট করে কেটে ফেলতে পারেন: $f = $a ?: $b ?: $c;
Rei

1
পিএইচপি 7 হিসাবে আপনি ??এই জন্য ব্যবহার করতে পারেন । $a = $b ?? 'default'
স্পেনসার রুস্কিন

@ স্পেন্সারআরস্কিন তাই যদি সত্য $aহয় তবে এর মান নির্ধারিত হবে ? $b$b'default'
ওল্ডবয়

সেটা ঠিক. এই পৃষ্ঠায় নাল কোলেসিং
স্পেনসার

উত্তর:


212

ব্যাখ্যার জন্য শর্ট সার্কিট মূল্যায়ন দেখুন । এই অপারেটরগুলি বাস্তবায়নের একটি সাধারণ উপায়; এটি জাভাস্ক্রিপ্ট অনন্য নয়।


57
কেবল 'গোটচা' মনে করুন যা শেষটি সর্বদা নির্ধারিত হবে এমনকি তারা সমস্ত অপরিজ্ঞাত, নাল বা মিথ্যা হলেও। আপনার চেনেন এমন কিছু স্থাপন করা মিথ্যা, নাল, বা শৃঙ্খলার শেষে অপরিজ্ঞাত নয় signal কিছুই খুঁজে পাওয়া যায়নি এমন ইঙ্গিত দেওয়ার একটি ভাল উপায়।
এরিক রিপেন

আমি এই কৌশলটি বছরের পর বছর ধরে দেখেছি, তবে যখন আমি এটি ব্যবহার করতে চেয়েছিলাম তখনই আমাকে কী প্রকাশ করেছিল তা হল অভিব্যক্তির ফলাফলটি বুলিয়ানকে দেওয়া হয় না। আপনি পরে করতে পারবেন না if( true == f )। যদি কোনও পূর্ণসংখ্যা f এ সঞ্চয় করা থাকে, তবে এই পরীক্ষাটি সর্বদা মিথ্যা হয়ে যাবে।

9
আসলে, আপনি if(true == f)যা করতে পারেন , যা একই if(f): পরীক্ষায় পাস হবে। আপনার কাছে পরীক্ষা করতে চান, টাইপ এর f: কঠোর তুলনা ব্যবহার if(true === f), যা প্রকৃতপক্ষে ব্যর্থ হবে।
অ্যালসিএন্ডে

5
হ্যাঁ, শর্ট সার্কিট মূল্যায়ন সাধারণ। তবে এখানে পার্থক্যটি জাভাস্ক্রিপ্ট যেভাবে শেষের মানটি কার্যকর করে থামিয়েছিল তা ফেরত দেয়। @ অনুরাগের উত্তর এটি ব্যাখ্যা করার চেয়ে আরও ভাল কাজ করে।
বেন .12

নিশ্চিত না যে এটি প্রাথমিকদের জন্য সেরা ব্যাখ্যা কিনা। আমি সুপারিশ করব: javascript.info/logical-operators
csguy

198

এই দায়িত্ব অর্পণ করা তৈরি করা হয় ডিফল্ট মান এই ক্ষেত্রে মান y, যদি xপরিবর্তনশীল falsy

জাভাস্ক্রিপ্টে বুলিয়ান অপারেটররা অপরেন্ডকে ফিরিয়ে দিতে পারে এবং অন্যান্য ভাষার মতো বুলিয়ান ফলাফলটি সর্বদা না।

লজিকাল ওআর অপারেটর ( ||) তার প্রথম অপারেন্ডের মান প্রদান করে, যদি প্রথমটি মিথ্যা হয়, অন্যথায় প্রথম অপারেন্ডের মান ফিরে আসে।

উদাহরণ স্বরূপ:

"foo" || "bar"; // returns "foo"
false || "bar"; // returns "bar"

Falsy মান যারা করতে বাধ্য হয় falseযখন বুলিয়ান প্রেক্ষাপটে ব্যবহার করত এবং তারা 0, null, undefined, একটি খালি স্ট্রিং, NaNএবং অবশ্যই false


1
+1 এর মতো আর কোনও অপারেটর রয়েছে? বা ||একচেটিয়া।
অস্কাররাজ

9
@ সাপোর্ট (@ অস্কার): লজিকাল &&অপারেটরের একই আচরণ রয়েছে, এটি প্রথম অপারেন্ডের মানটি যদি মিথ্যাবাদী হয় এবং দ্বিতীয় অপারেন্ডের মান প্রদান করে তবেই যদি প্রথমটি সত্যবাদী হয় , যেমন ("foo" && "bar") == "bar"এবং(0 && "bar") == 0
সিএমএস

12
মিথ্যা প্রকৃতপক্ষে প্রযুক্তিগত শব্দ।
কেওসপ্যান্ডিয়ন

8
সুতরাং আমরা এই পোস্টে ||, &&, "মিথ্যা" এবং "সত্যই" সম্পর্কে শিখেছি। "লুকানো" উপহারের সাথে সেরা উত্তর।
অ্যালেক্স

4
@Alex বিশেষ দ্রষ্টব্য: "Truthy" ( "সত্যিই"!)
Bumpy

182

জাভাক্রিপ্ট লজিকাল অপারেটরগুলির জন্য এবং শর্ট সার্কিট মূল্যায়ন ব্যবহার করে । তবে এটি অন্যান্য ভাষাগুলির থেকে পৃথক যে এটি একটি বা মানের পরিবর্তে শেষের মানটি কার্যকর করা বন্ধ করে দিয়েছিল the||&&truefalse

নিম্নলিখিত মানগুলি জাভাস্ক্রিপ্টে মিথ্যা বলে বিবেচিত হয়।

  • মিথ্যা
  • খালি
  • "" (খালি স্ট্রিং)
  • 0
  • ন্যান
  • অনির্দিষ্ট

অপারেটর অগ্রাধিকারের নিয়মগুলি উপেক্ষা করা এবং বিষয়গুলি সহজ রেখে, নিম্নলিখিত উদাহরণগুলি দেখায় যে কোন মানটি মূল্যায়নকে থামিয়ে দিয়েছিল এবং ফলস্বরূপ ফিরে আসে।

false || null || "" || 0 || NaN || "Hello" || undefined // "Hello"

প্রথম 5 টি পর্যন্ত মানগুলি NaNমিথ্যা বলে মনে হয় যতক্ষণ না এটি প্রথম সত্যবাদী মানটির সাথে মিলিত হয় - যতক্ষণ না এটি "Hello"সম্পূর্ণ এক্সপ্রেশনটিকে সত্য করে তোলে, তাই আরও কিছু মূল্যায়ন করা হবে না এবং "Hello"অভিব্যক্তির ফলস্বরূপ ফিরে আসে । একইভাবে, এই ক্ষেত্রে:

1 && [] && {} && true && "World" && null && 2010 // null

প্রথম 5 টি মানগুলি সত্যবাদী এবং যতক্ষণ না এটি প্রথম মিথ্যা মানটি পূরণ করে ততক্ষণ মূল্যায়ন করা হয় ( null) যা অভিব্যক্তিটিকে মিথ্যা করে তোলে, তাই 2010আর মূল্যায়ন করা হয় না এবং nullঅভিব্যক্তির ফলাফল হিসাবে ফিরে আসে।

আপনি যে উদাহরণটি দিয়েছেন তা হ'ল একটি কার্য সম্পাদনের জন্য জাভাস্ক্রিপ্টের এই সম্পত্তিটি ব্যবহার করা। এটি যেখানেই ব্যবহার করা যেতে পারে যেখানে মানগুলির একটি সেটের মধ্যে আপনাকে প্রথম সত্যবাদী বা মিথ্যা মান পেতে হবে। এই কোড নিচে মান নির্ধারণ করবে "Hello"করার bপরিবর্তে যদি 'অন্য চেক করছেন, যেমন সহজে ডিফল্ট মান নির্ধারণ করে তোলে।

var a = false;
var b = a || "Hello";

আপনি নীচের উদাহরণটিকে এই বৈশিষ্ট্যটির শোষণ বলে অভিহিত করতে পারেন এবং আমি বিশ্বাস করি এটি কোড পড়া আরও কঠিন করে তোলে।

var messages = 0;
var newMessagesText = "You have " + messages + " messages.";
var noNewMessagesText = "Sorry, you have no new messages.";
alert((messages && newMessagesText) || noNewMessagesText);

সতর্কতার অভ্যন্তরে, আমরা পরীক্ষা করে messagesনিচ্ছি যে মিথ্যা কিনা, এবং যদি হ্যাঁ, তবে মূল্যায়ন করুন এবং ফিরে করুন noNewMessagesText, অন্যথায় মূল্যায়ন করুন এবং ফিরে আসুন newMessagesText। যেহেতু এটি উদাহরণ হিসাবে মিথ্যা, তাই আমরা noNewMessagesText এবং সতর্কতা এ থামি "Sorry, you have no new messages."


36
নিম্নলিখিত ব্যাখ্যার কারণে এটি আমার মতে সেরা উত্তর:However, it's different to other languages in that it returns the result of the last value that halted the execution, instead of a true, or false value.
মাস্তাজি

1
@ মাস্তাজি হ্যাঁ, এটি আইএমএইচও-তে বোল্ড ফন্টে যেতে হবে।
নুবার

6
উত্তর হওয়া উচিত, এটি পরীক্ষাগুলির ক্ষেত্রে মানগুলি চয়ন করা দেখায়।
দাদান

সম্মত, এটি আমার প্রিয় উত্তর কারণ এটি জাভাস্ক্রিপ্ট ভেরিয়েবল অ্যাসাইনমেন্ট উদ্বেগগুলিকে বিশেষভাবে সম্বোধন করে। অতিরিক্তভাবে, আপনি যদি অ্যাসাইনমেন্টের জন্য পরীক্ষার জন্য পরবর্তী চলকগুলির মধ্যে একটি হিসাবে চলক (অপারেটরের পরে) হিসাবে কোনও টার্নারি ব্যবহার করতে চান তবে অ্যাসাইনমেন্ট মূল্যায়নের জন্য সঠিকভাবে কাজ করার জন্য আপনাকে অবশ্যই বার্নেসিসে টের্নারিটি আবৃত করতে হবে।
জোয়ে টি

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত
অ্যালান

49

জাভাস্ক্রিপ্ট ভেরিয়েবলগুলি টাইপ করা হয় না, সুতরাং চ বুলিয়ান অপারেটরগুলির মাধ্যমে নির্ধারিত হলেও একটি পূর্ণসংখ্যার মান নির্ধারণ করা যেতে পারে।

f এর নিকটতম মান নির্ধারিত হয় যা মিথ্যের সমান নয় । সুতরাং 0, ভুয়া, নাল, অপরিজ্ঞাত সমস্তই শেষ হয়ে গেছে:

alert(null || undefined || false || '' || 0 || 4 || 'bar'); // alerts '4'

13
''এক্ষেত্রেও সমান মিথ্যাকে ভুলে যাবেন না ।
ব্রিগেন্ড

f is assigned the NEAREST valueএখানে একটি সুন্দর গুরুত্বপূর্ণ পয়েন্ট যা নির্দেশ করার জন্য আপভোট ।
স্টিভিজয়

3
"নিকটবর্তী" বেশ সত্য নয়, যদিও এটির উপস্থিতি রয়েছে। বুলিয়ান ||অপারেটর, বুলিয়ান অপারেটর হিসাবে দুটি অপারেশন রয়েছে: একটি বাম পাশ এবং ডান দিক। যদি সত্যের বাম দিকটি সত্য ||হয় তবে ক্রিয়াকলাপটি বাম দিকে সরে যায় এবং ডান দিকটি উপেক্ষা করা হবে। যদি বাম দিকটি মিথ্যা হয় তবে এটি ডানদিকে সল্ভ হয় । তাই null || undefined || 4 || 0আসলে সমাধান করা undefined || 4 || 0যা সমাধান করা থেকে 4 || 0যা সমাধান করা থেকে 4
ডিভাইস 1

29

এটিতে কোনও যাদু নেই। বুলিয়ান এক্সপ্রেশনগুলির মতো a || b || c || dঅলসভাবে মূল্যায়ন করা হয়। ইন্টারপেটর এর মান সন্ধান করে a, এটি অপরিজ্ঞাত তাই এটি মিথ্যা তাই এটি এগিয়ে যায়, তারপরে এটি দেখতে পায় bকোনটি নাল, যা এখনও মিথ্যা ফলাফল দেয় যাতে এটি এগিয়ে যায়, তারপরে এটি দেখায় c- একই গল্প। অবশেষে এটি দেখে dএবং বলে 'হু, এটি নাল নয়, সুতরাং আমার ফলাফল রয়েছে' এবং এটি এটিকে চূড়ান্ত পরিবর্তনশীল হিসাবে নির্ধারণ করে।

এই কৌশলটি সমস্ত গতিশীল ভাষায় কাজ করবে যা বুলিয়ান এক্সপ্রেশনগুলির অলস শর্ট সার্কিট মূল্যায়ন করে do স্থির ভাষায় এটি সংকলন করবে না (টাইপ ত্রুটি)। যে ভাষাগুলি বুলিয়ান অভিব্যক্তিগুলি মূল্যায়নে আগ্রহী তাদের মধ্যে এটি যৌক্তিক মান (অর্থাত্ এই ক্ষেত্রে সত্য) ফিরে আসবে।


6
সুন্দর স্ট্যাটিক ভাষায় সি # টি ব্যবহার করতে পারে ?? অপারেটর á লা: অবজেক্ট এফ = এ ?? খ ?? গ ?? ডি ?? ই;
হার্জমিস্টার

2
হার্জমিস্টার - ধন্যবাদ! আমি জানতাম না ?? অপারেটরটিকে সি # তে বেঁধে রাখা যেতে পারে এবং অলস মূল্যায়ন কৌশলগুলিতে ব্যবহার করা যেতে পারে
মারেক

3
অন্য কোথাও উল্লিখিত হিসাবে, dশেষটিটি নাল / অপরিজ্ঞাত ছিল কিনা তা নির্ধারিত হবে।
ব্ল্যাকভেজেবল

একটি সামান্য সংশোধন: ||অপারেটর সর্বদা পুরো ডান পাশের অপরেন্ডে সমাধান করে যখন বাম দিকটি মিথ্যা থাকে। বুলিয়ান অপারেটর হওয়ায় এটি কেবল দুটি ইনপুট দেখায়: বাম দিক এবং ডান দিক। পার্সার এগুলিকে পদগুলির একটি সিরিজ হিসাবে দেখবে না, সুতরাং যখন এটি প্রথম সত্যবাদী মানটি খুঁজে পায় তখন তা থামবে না যদি না যে মানটি অন্যটির বাম হাতের সংশ্লেষ না হয় ||
ডিভাইস 1

8

এই প্রশ্নটি ইতিমধ্যে বেশ কয়েকটি ভাল উত্তর পেয়েছে।

সংক্ষেপে, এই কৌশলটি কীভাবে ভাষাটি সংকলন করা হয় তার একটি বৈশিষ্ট্যের সুবিধা নিচ্ছে। তা হল, বুলিয়ান অপারেটরগুলির মূল্যায়ন জাভাস্ক্রিপ্ট "শর্ট সার্কিট" এবং প্রথম অ-মিথ্যা ভেরিয়েবল মান বা সর্বশেষ ভেরিয়েবলের সাথে যা আছে তার সাথে যুক্ত মানটি ফিরিয়ে দেবে। অনুরাগের সেই মানগুলির ব্যাখ্যা ব্যাখ্যা দেখুন যা মিথ্যা হিসাবে মূল্যায়ন করবে।

বিভিন্ন কারণে এই কৌশলটি ব্যবহার করা ভাল অনুশীলন নয়; যাহোক.

  1. কোড পঠনযোগ্যতা: এটি বুলিয়ান অপারেটরগুলি ব্যবহার করছে, এবং যদি এই সংকলনগুলি কীভাবে আচরণ না করা হয় তবে প্রত্যাশিত ফলাফলটি বুলিয়ান মান হতে পারে।
  2. স্থায়িত্ব: এটি ভাষাটি কীভাবে সংকলিত হয় যা একাধিক ভাষায় অসঙ্গতিযুক্ত তার একটি বৈশিষ্ট্য ব্যবহার করছে এবং এর ফলে এটি এমন একটি বিষয় যা ভবিষ্যতে পরিবর্তনের জন্য সম্ভাব্য লক্ষ্যবস্তু হতে পারে।
  3. ডকুমেন্টেড বৈশিষ্ট্য: একটি বিদ্যমান বিকল্প রয়েছে যা এই প্রয়োজনটি পূরণ করে এবং আরও বেশি ভাষায় সুসংগত। এটি টার্নারি অপারেটর হবে:

    ()? মান 1: মান 2।

টেরিনারি অপারেটরটি ব্যবহারের জন্য আরও কিছু বেশি টাইপিংয়ের প্রয়োজন হয় তবে এটি বুলিয়ান এক্সপ্রেশনকে মূল্যায়ন করা এবং নির্ধারিত মানের মধ্যে পরিষ্কারভাবে পার্থক্য করে। এছাড়াও এটি বেঁধে রাখা যায়, সুতরাং উপরে সম্পাদিত ডিফল্ট অ্যাসাইনমেন্টগুলির ধরণগুলি পুনরায় তৈরি করা যেতে পারে।

var a;
var b = null;
var c = undefined;
var d = 4;
var e = 'five';

var f =  ( a ) ? a : 
                ( b ) ? b :
                       ( c ) ? c :
                              ( d ) ? d :
                                      e;

alert(f); // 4

potentially be targeted for change in the future.হ্যাঁ, তবে আমি জাভাস্ক্রিপ্টের জন্য প্রযোজ্য না।
দাদান

এখানে এসে উপরের সমস্ত উত্তরগুলি দেখেছি এবং আমার মনে হচ্ছিল যে কিছু এই নিয়োগ সম্পর্কে সবেমাত্র বন্ধ করেছে। আমি সবেমাত্র রবার্ট সি মার্টিনের ক্লিন কোডটি পড়েছি এবং এই ধরণের নিয়োগটি অবশ্যই "হাইড নো পার্শ্ব প্রতিক্রিয়া" নিয়ম লঙ্ঘন করেছে ... যখন লেখক নিজেই বলেছেন যে তাঁর বইটি ভাল কোড তৈরির জন্য অনেক কৌশলগুলির মধ্যে একটি মাত্র, I এখনও অবাক হয়ে গিয়েছিল যে এই ধরণের দায়িত্ব নিয়ে অন্য কেউ আপত্তি করেনি। +1
অ্যালবার্ট রোথম্যান

প্রতিক্রিয়ার জন্য আপনাকে ধন্যবাদ. আমি মনে করি কোড লেখার সময় আরও বেশি লোকের পার্শ্ব প্রতিক্রিয়া বিবেচনা করা উচিত, তবে যতক্ষণ না কেউ অন্য ব্যক্তির কোড বজায় রাখতে অনেক সময় ব্যয় করে। তারা প্রায়শই এটি বিবেচনা করে না।
ডাব্লুস্প্পসন

1
আপনি কি সত্যিই মনে করেন যে একাকীত্বের চেয়ে আরও পরিষ্কার a || b || c || d || e?
ডিভাইস 1

1
@ অ্যালবার্টরোথম্যান আমি কোনও পার্শ্ব প্রতিক্রিয়া দেখছি না। কিছুই পরিবর্তন করা হচ্ছে না। এটি কেবল নাল কোলেসেসিংয়ের জন্য একটি শর্টহ্যান্ড, যা অনেক ভাষায় বেশ সাধারণ বৈশিষ্ট্য।
ডিভাইস 1

7

আউটপুট প্রথম সত্য মান ফেরান

যদি সব মিথ্যা হয় তবে শেষের মিথ্যা মান।

উদাহরণ: -

  null || undefined || false || 0 || 'apple'  // Return apple

4

এটি "সত্যবাদী" (শূন্যহীন, একটি বৈধ অবজেক্ট / অ্যারে / ফাংশন / যাই হোক না কেন) বা অন্যথায় zমানটিকে নতুন পরিবর্তনশীল ( ) সেট করে xদিচ্ছে y। এটি xকোনও ক্ষেত্রে ডিফল্ট মান প্রদানের তুলনামূলকভাবে সাধারণ উপায় ।

উদাহরণস্বরূপ, যদি আপনার এমন কোনও ফাংশন থাকে যা alচ্ছিক কলব্যাক প্যারামিটার নেয় তবে আপনি একটি ডিফল্ট কলব্যাক সরবরাহ করতে পারেন যা কিছুই করে না:

function doSomething(data, callback) {
    callback = callback || function() {};
    // do stuff with data
    callback(); // callback will always exist
}

1

এর অর্থ এটি যদি xসেট করা থাকে তবে মানটি zহবে x, অন্যথায় যদি yসেট করা থাকে তবে এর মানটি এর মান হিসাবে সেট করা হবে z

এটা যেমন একই

if(x)
  z = x;
else
  z = y;

এটি সম্ভব কারণ জাভাস্ক্রিপ্টে লজিকাল অপারেটরগুলি বুলিয়ান মানগুলি দেয় না তবে অপারেশনটি সম্পন্ন করার জন্য প্রয়োজনীয় শেষ উপাদানটির মান (একটি OR বাক্যে এটি প্রথম অ-ভ্যালু মান হবে, একটি বাক্যটিতে এটি সর্বশেষ হবে) )। যদি অপারেশন ব্যর্থ হয়, তবে falseফিরে আসবে।


5
এটা ভুল! যদি (x) {z = x; } অন্য {z = y; the প্রথম মানটি মিথ্যা হলে, দ্বিতীয় মানটি সর্বদা নির্ধারিত হয় যে মানটি আসলে কী তা নির্ভর করে।
অশুভ

ব্যতীত আমি মনে করি যে এটি x ভুয়া থাকলে কেবল y কে z প্রদান করে । এটি এফএফ-এ আমার জন্য কাজ করে অবশ্যই এটি বাস্তবায়ন নির্ভরও হতে পারে।
tvanfosson

7
মিথ্যা প্রত্যাবর্তনের শেষ অংশটি সত্য নয় (কোনও পাং উদ্দেশ্য নয়)। যদি প্রথম মানটি মিথ্যা হয় তবে ||অপারেটর এটি সত্যবাদী কিনা তা নির্বিশেষে কেবল দ্বিতীয় মানটি প্রদান করে।
ম্যাথু ক্রামলে

-1। আপনার সমতুল্য কোড স্নিপেট সঠিক, তবে গুরুত্বপূর্ণ বিষয়টি যদি মানটি সত্য হয় তবে তার মানতেz সেট হয়ে যায় । অন্যথায় এটির মান সেট হয়ে যায় । এর অর্থ হ'ল যদি উদাহরণস্বরূপ, বা খালি স্ট্রিং সেট করা থাকে তবে এটি আপনি যা বলছেন তা তা করে না, কারণ এই মানগুলি মিথ্যাxyx0""
ড্যানিয়েল ক্যাসিডি

1

একে শর্ট সার্কিট অপারেটর বলা হয়।

সংক্ষিপ্ত-সার্কিট মূল্যায়ন বলে, দ্বিতীয় যুক্তিটি কেবল তখনই কার্যকর করা হয় বা মূল্যায়ন করা হয় যদি প্রথম যুক্তিটি এক্সপ্রেশনটির মান নির্ধারণের জন্য পর্যাপ্ত না হয়। যখন OR (||) ফাংশনের প্রথম যুক্তিটি সত্যকে মূল্যায়ন করে, সামগ্রিক মানটি সত্য হতে হবে।

এটি ফাংশন আর্গুমেন্টের জন্য একটি ডিফল্ট মান সেট করতেও ব্যবহৃত হতে পারে `

function theSameOldFoo(name){ 
  name = name || 'Bar' ;
  console.log("My best friend's name is " + name);
}
theSameOldFoo();  // My best friend's name is Bar
theSameOldFoo('Bhaskar');  // My best friend's name is Bhaskar`

0

এটি এক্সকে মূল্যায়ন করবে এবং, যদি এক্স শূন্য না হয়, খালি স্ট্রিং বা 0 (লজিকাল মিথ্যা), তবে এটি এটিকে জেডকে নির্ধারিত করবে। যদি এক্স নাল হয়, খালি স্ট্রিং, বা 0 (লজিকাল মিথ্যা), তবে এটি y কে z তে নির্ধারিত করবে।

var x = '';
var y = 'bob';
var z = x || y;
alert(z);

আউটপুট 'বব';


আপনার খালি 'খালি' বলতে কী বোঝাতে চান তা স্পষ্ট করা উচিত। খালি স্ট্রিংগুলি বাধ্য করে false, তবে খালি অ্যারে বা বস্তু বাধ্য করে true
ড্যানিয়েল ক্যাসিডি

@ ড্যানিয়েল "নাল, খালি, বা 0" - নাল অ্যারে এবং অবজেক্টের ক্ষেত্রে প্রযোজ্য হবে। পয়েন্ট নেওয়া হয়েছে, যদিও।
tvanfosson

0

মতে বিল হিগিন্স ব্লগ পোস্ট; জাভাস্ক্রিপ্ট যৌক্তিক বা অ্যাসাইনমেন্ট আইডিয়াম (ফেব্রুয়ারী 2007), এই আচরণটি v1.2 (কমপক্ষে) হিসাবে সত্য

তিনি এর জন্য আরেকটি ব্যবহারেরও পরামর্শ দিয়েছেন (উদ্ধৃত): " ক্রস ব্রাউজারের পার্থক্যের হালকা ওজনের স্বাভাবিককরণ "

// determine upon which element a Javascript event (e) occurred
var target = /*w3c*/ e.target || /*IE*/ e.srcElement;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.