জাভাস্ক্রিপ্টে একটি অপরিজ্ঞাত বা নাল ভেরিয়েবল কীভাবে পরীক্ষা করবেন?


500

আমরা আমাদের জাভাস্ক্রিপ্ট কোডে নিম্নলিখিত কোড প্যাটার্নটি প্রায়শই ব্যবহার করি

if (typeof(some_variable) != 'undefined' && some_variable != null)
{
    // Do something with some_variable
}

একই প্রভাব আছে কি চেক করার কম ভার্বোজ উপায় আছে?

কিছু ফোরাম এবং সাহিত্যের মতে কেবল নীচের একই প্রভাব হওয়া উচিত।

if (some_variable)
{
    // Do something with some_variable
}

দুর্ভাগ্যক্রমে, ফায়ারবাগ রানটাইম এ ত্রুটি হিসাবে এই জাতীয় বিবৃতি মূল্যায়ন করে যখন some_variableঅপরিজ্ঞাপিত হয়, তবে প্রথমটি এটির জন্য ঠিক আছে। এটি কি কেবল ফায়ারব্যাগের (অযাচিত) আচরণ বা এই দুটি উপায়ের মধ্যে আসলেই কিছু পার্থক্য রয়েছে?


46
if(some_variable) { ... }যদি চালানো হবে না some_variableহয় falseবা 0বা ...
kennytm

ভাল পয়েন্ট;) তবে আমি বলি যে আমি জানি এটি মিথ্যা বা 0 হতে পারে না এবং আমি এটি কেবল কোনও যুক্তিতে (স্ট্রিং, অ্যারে ইত্যাদি) ব্যবহার করতে পারি কিনা তা যাচাই করতে চাই
টমাস ভানা


2
... বা একটি খালি স্ট্রিং।
ডেভিড

উত্তর:


333

আপনার কেসগুলির মধ্যে পার্থক্য করতে হবে:

  1. ভেরিয়েবল হতে পারে undefinedবা অঘোষিত না । আপনি ব্যতীত অন্য যে কোনও প্রসঙ্গে অঘোষিত ভেরিয়েবল অ্যাক্সেস করলে আপনি একটি ত্রুটি পাবেন typeof
if(typeof someUndeclaredVar == whatever) // works
if(someUndeclaredVar) // throws error

একটি পরিবর্তনশীল যে ঘোষণা করা হয়েছে কিন্তু সক্রিয়া নয় undefined

let foo;
if (foo) //evaluates to false because foo === undefined
  1. অপরিজ্ঞাত বৈশিষ্ট্য , পছন্দ someExistingObj.someUndefProperty। একটি অপরিজ্ঞাত সম্পত্তি ত্রুটি দেয় না এবং কেবল ফিরে আসে undefined, যা কোনও বুলিয়ানে রূপান্তরিত হলে তা মূল্যায়ন করে false। সুতরাং, আপনি যদি যত্ন না করেন 0এবং falseব্যবহার if(obj.undefProp)করা ঠিক আছে। এই সত্যের উপর ভিত্তি করে একটি প্রচলিত প্রথা রয়েছে:

    value = obj.prop || defaultValue

    যার অর্থ "যদি objসম্পত্তি থাকে তবে propএটিকে valueবরাদ্দ করুন, অন্যথায় ডিফল্ট মান নির্ধারণ করুন defautValue"।

    কিছু লোক এই আচরণকে বিভ্রান্তিমূলক মনে করে তর্ক করে যে এটি হার্ড-টু-সন্ধানের ত্রুটি বাড়ে এবং inপরিবর্তে অপারেটরটি ব্যবহার করার পরামর্শ দেয়

    value = ('prop' in obj) ? obj.prop : defaultValue

1
তারপরে আপনি hasOwnProperty এবং প্রোটোটাইপ সম্পর্কে কথা বলতে পারেন। 'ইনডেক্সফ' এর মধ্যে []! == [] .হসানপ্রপার্টি ('ইনডেক্সফ')
অ্যালসিএন্ডে

1
হ্যাঁ, আমি এটি যুক্ত করার বিষয়ে ভেবেছিলাম, তবে সংক্ষিপ্ততার জন্য সম্পূর্ণতা ত্যাগ করার সিদ্ধান্ত নিয়েছি। ;)
ব্যবহারকারী 187291

52
আপনি 0 এবং মিথ্যা সমস্যার সমাধান করেন না
টিএমএস

12
আপনার অর্থ অঘোষিত ভেরিয়েবল। একটি ভেরিয়েবল ঘোষণা করা যেতে পারে তবে এর মান রয়েছে undefined
Tgr

1
এবং এটিও নোট করুন যে typeofএকটি স্ট্রিং প্রদান করে। সুতরাং var myVar; typeof(myVar)==undefinedফিরে falseনা true
rism

417

আমি মনে করি "মান হয় nullবা undefined" এর পরীক্ষার সবচেয়ে কার্যকর উপায় হ'ল

if ( some_variable == null ){
  // some_variable is either null or undefined
}

সুতরাং এই দুটি লাইন সমতুল্য:

if ( typeof(some_variable) !== "undefined" && some_variable !== null ) {}
if ( some_variable != null ) {}

নোট 1

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

alচ্ছিক যুক্তি পরীক্ষা করুন:

function(foo){
    if( foo == null ) {...}

একটি বিদ্যমান বস্তুর উপর বৈশিষ্ট্য পরীক্ষা করুন

if(my_obj.foo == null) {...}

অন্যদিকে typeofঅঘোষিত গ্লোবাল ভেরিয়েবলগুলি (কেবল রিটার্ন undefined) ডিল করতে পারে । তবুও এই কারণগুলি ভাল কারণে ন্যূনতম করা উচিত, যেমন আলসিয়েঁয়ে ব্যাখ্যা করেছিলেন।

নোট 2

এটি - এমনকি ছোট - বৈকল্পিক সমতুল্য নয় :

if ( !some_variable ) {
  // some_variable is either null, undefined, 0, NaN, false, or an empty string
}

সুতরাং

if ( some_variable ) {
  // we don't get here if some_variable is null, undefined, 0, NaN, false, or ""
}

নোট 3

সাধারণত এটির ===পরিবর্তে ব্যবহার করার পরামর্শ দেওয়া হয় ==। প্রস্তাবিত সমাধান এই নিয়মের ব্যতিক্রম। JSHint সিনট্যাক্স পরীক্ষক এমনকি উপলব্ধ eqnullএই কারণে বিকল্প।

থেকে jQuery এর শৈলী গাইড :

কঠোর সমতা চেক (===) == এর পক্ষে ব্যবহার করা উচিত। একমাত্র ব্যতিক্রম হ'ল নালার মাধ্যমে অপরিজ্ঞাত এবং নাল পরীক্ষা করার সময় checking

// Check for both undefined and null values, for some important reason. 
undefOrNull == null;

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

33
দুঃখিত, তবে আমার সাথে একমত হতে হবে ;-) == null'নাল বা অপরিজ্ঞাত' (যা প্রশ্নাবলীর বিষয়) এর জন্য পরীক্ষার জন্য ইমো সবচেয়ে দক্ষ Using এটি কোনওভাবেই অস্বাভাবিক নয় (jQuery 1.9.1 এ 43 বার ব্যবহৃত হয়েছে) যেহেতু আপনি প্রায়শই জানেন যে ভেরিয়েবলটি ঘোষিত হয়েছিল - বা আপনি কোনও বিদ্যমান অবজেক্টের সম্পত্তি হিসাবে পরীক্ষা করেন if( o.foo == null)
mar10

1
@ mar10 (অ্যান্ডডিফাইন্ডওয়ার == নাল) আপনাকে একটি "অ্যান্ডডিফাইন্ডওয়ার সংজ্ঞায়িত করা হয়নি" ত্রুটিটি সত্য নয়।
রন্ন

7
এই সংক্ষিপ্ত বিকল্পের জন্য ধন্যবাদ। আমার কোডের 99% এ নাল এবং অপরিজ্ঞাত মধ্যে পার্থক্য করার দরকার নেই, সুতরাং এই চেকের বংশবৃদ্ধি কম বিশৃঙ্খলাযুক্ত কোডের ফলাফল করে।
ইয়ান লাভজয়

1
গ্লোবাল ভেরিয়েবল চেক করার সময় একটি রেফারেন্স এরির প্রতিরোধ করতে, ব্যবহার করুন window.someProperty == null। লেখার পরিবর্তে: স্থানীয় ভেরিয়েবল জন্য, আপনি খুব সহজেই তারা ঘোষণা করা করতে পারেন if (...) {var local = ""}লেখvar local; if (...) { local = ""; }
Aloso

66

সাধারণ সাম্যতার সাথে নাল পরীক্ষা করাও অপরিজ্ঞাপিত ক্ষেত্রে সত্য হবে।

if (window.variable == null) alert('variable is null or undefined');

জেএস সমতা


4
ন্যানের সমান নয়?
শারজিল আহমেদ

2
@ মোমোথনিস্ট NaN NaN এর সমান নয় ( MDN এর NaN পৃষ্ঠা দেখুন )। জাভাস্ক্রিপ্ট তাদের ভাসমান পয়েন্টের জন্য আইইইই -754 ব্যবহার করে যা এই আচরণগুলি নির্দিষ্ট করে। এ সম্পর্কে কিছু চিন্তাভাবনা আছে, stackoverflow.com/a/23666623/2563765 দেখুন
স্টিভেন

1
@ শারজিল আহমেদ এটি গাণিতিকভাবে সংশোধন করেছেন। NaNপার্থক্য সমীকরণ থেকে কখনই সমান হওয়ার আশা করা যায় না
থাইনা

28

ES5 এবং ES6 এর মতো নতুন জাভাস্ক্রিপ্ট স্ট্যান্ডার্ডগুলিতে আপনি ঠিক বলতে পারেন

> Boolean(0) //false
> Boolean(null)  //false
> Boolean(undefined) //false

সমস্ত মিথ্যা প্রত্যাবর্তন, যা খালি ভেরিয়েবলগুলির পাইথনের চেকের অনুরূপ। সুতরাং আপনি যদি কোনও ভেরিয়েবলের চারপাশে শর্তযুক্ত লজিক লিখতে চান তবে কেবল বলুন

if (Boolean(myvar)){
   // Do something
}

এখানে "নাল" বা "খালি স্ট্রিং" বা "অপরিজ্ঞাত" দক্ষতার সাথে পরিচালিত হবে।


2
আই 5 এর মত সমর্থন করে, এটি কেন বেশি পরিচিত নয় !?
হিম্মেটরগুলি

12
ওপি কেবল ভিন্ন পরীক্ষা চেয়েছিল nullএবং undefined, অন্যান্য মিথ্যা মানগুলি সত্য হওয়া উচিত!
আন্দ্রে ফিগুয়েরেদো

1
এটি শর্তসাপেক্ষে কোনও মূল্য যুক্ত করে না। শর্ত ঠিক একই মূল্যায়ণ এবং এখনও জন্য মিথ্যা ফেরৎ 0, NaN। এটি যখন তখন আপনি কোনও অবজেক্টের রেফারেন্স না রেখে কোনও বস্তুর সত্যতা ক্যাপচার করতে চান তখন আপনি কোনও সম্ভাব্য বড় অবজেক্টের চেয়ে এটি সঞ্চয় করতে পারেন। এফওয়াইআই এটিও সমান !!value, যা প্রথম !সত্যকে অগ্রাহ্য করে, এবং দ্বিতীয়টি আবার এটিকে অবহেলা করে।
erich2k8

> এফওয়াইআই এটিও সমান !! মান, যা প্রথম! সত্যতা অবহেলা। কোন এফওয়াইআই এর সমতুল্য if (var)যা বুলিয়ানের জন্য নিক্ষেপ করা হবে, তাই মূলত সম্পূর্ণ অকেজো ...
সিরিল চ্যাপন

2
আক্ষরিকভাবে কীওয়ার্ডটি অপরিজ্ঞাতকালে ব্যবহার করার সময় , Boolean(undefined)কাজ করে যাওয়া চেষ্টা করে যে কোনও অনির্ধারিত ভেরিয়েবলের সাথে কাজ করে না , এবং এটি নাল বা অপরিজ্ঞাত জন্য চেক করার পুরো বিষয়টি। এই if (Boolean(undeclareVarName)) { console.log('yes'); } else { console.log('no'); }: "undeclareVarName সংজ্ঞায়িত করা হয় না ReferenceError" একটি ReferenceError বলার অপেক্ষা রাখে না ছোঁড়ার
স্টিফেন পি

22

আপনি যদি অঘোষিত ভেরিয়েবল চেষ্টা করে দেখেন তবে সমস্ত জাভাস্ক্রিপ্ট প্রয়োগে একটি ত্রুটি নিক্ষেপ করা হবে।

বস্তুর বৈশিষ্ট্যগুলি একই শর্ত সাপেক্ষে নয়। যদি কোনও অবজেক্টের সম্পত্তি সংজ্ঞায়িত না করা হয়, আপনি চেষ্টা করে এটি অ্যাক্সেস করলে একটি ত্রুটি নিক্ষেপ করা হবে না। সুতরাং এই পরিস্থিতিতে আপনি সংক্ষিপ্ত করতে পারে:

 if (typeof(myObj.some_property) != "undefined" && myObj.some_property != null)

প্রতি

if (myObj.some_property != null)

এটি মনে রেখে এবং বৈশ্বিক ভেরিয়েবলগুলি বিশ্বব্যাপী বস্তুর বৈশিষ্ট্য হিসাবে অ্যাক্সেসযোগ্য ( windowব্রাউজারের ক্ষেত্রে), আপনি বিশ্বব্যাপী ভেরিয়েবলের জন্য নিম্নলিখিত ব্যবহার করতে পারেন:

if (window.some_variable != null) {
    // Do something with some_variable
}

স্থানীয় স্কোপগুলিতে, আপনার কোড ব্লকের শীর্ষে ভেরিয়েবলগুলি ঘোষিত হয় তা নিশ্চিত করা সর্বদা দরকারী, এটি পুনরাবৃত্তির ব্যবহারগুলিতে সংরক্ষণ করবে typeof


11
আপনি NaN, 0, "" এবং ভ্রান্ত কারণগুলি মিস করবেন যা তারা নাল বা অপরিজ্ঞাত নয় তবে মিথ্যাও।
Andreas Köberle

@ আন্ড্রেস কেবারলে ঠিক আছে। এমনকি অ-কঠোর সমতা অপারেটরও বলে যে নাল NaN, 0, "" এবং মিথ্যা থেকে আলাদা। if (myObj.some_property != null)সমতুল্য আচরণ পেতে আপনাকে করতে হবে।
thejoshwolfe

15

প্রথমে আপনি যা পরীক্ষা করেন সে সম্পর্কে আপনাকে খুব পরিষ্কার হতে হবে। জাভা স্ক্রিপ্টে আপনাকে ভ্রমণ করতে সমস্ত ধরণের অন্তর্নিহিত রূপান্তর রয়েছে এবং দুটি ভিন্ন ধরণের সাম্যতার তুলনা: ==এবং ===

একটি ক্রিয়াকলাপ, test(val)যা নিম্নলিখিত বৈশিষ্ট্যগুলির জন্য পরীক্ষা করে nullবা তা undefinedথাকা উচিত:

 test(null)         => true
 test(undefined)    => true
 test(0)            => false
 test(1)            => false
 test(true)         => false
 test(false)        => false
 test('s')          => false
 test([])           => false

আসুন দেখুন এখানে কোন ধারণাগুলি আসলে আমাদের পরীক্ষায় উত্তীর্ণ হয়।

এই কাজ:

val == null
val === null || val === undefined
typeof(val) == 'undefined' || val == null
typeof(val) === 'undefined' || val === null

এগুলি কার্যকর হয় না:

typeof(val) === 'undefined'
!!val

আমি এই পদ্ধতির নির্ভুলতা এবং পারফরম্যান্সের সাথে তুলনা করার জন্য একটি জেএসপিআইপি এন্ট্রি তৈরি করেছি । বিভিন্ন ব্রাউজার / প্ল্যাটফর্ম জুড়ে পর্যাপ্ত রান হয়নি বলেই আপাতত ফলাফল বিলোপযুক্ত। আপনার কম্পিউটারে পরীক্ষা চালাতে দয়া করে এক মিনিট সময় নিন!

বর্তমানে, মনে হচ্ছে সহজ val == nullপরীক্ষাটি সেরা পারফরম্যান্স দেয়। এটি খুব কম সংক্ষিপ্ততম। val != nullআপনি পরিপূরক চাইলে পরীক্ষাটি অবহেলা করা যেতে পারে ।


12

এটিই কেবলমাত্র একমাত্র ক্ষেত্রে ==ব্যবহার করা উচিত:

if (val == null) console.log('val is null or undefined')

3
এই জবাবটি প্রায় সার্কিট হচ্ছে 2019 এর প্রচুর পরিমাণে অভাব রয়েছে তবে এই ব্যবহারের ক্ষেত্রে এটি কেআইএসএস। এছাড়াও val != nullবিপরীতে, কেবলমাত্র = এবং @ ইউকুলেলে যেহেতু এটি ব্যবহার করা কেবলমাত্র ==তখনই আপনি জানেন যে আপনি যখন এটি করছেন তখন কি হয়।
DKebler

7

যেহেতু কোনও একক সম্পূর্ণ এবং সঠিক উত্তর নেই, তাই আমি সংক্ষেপে জানার চেষ্টা করব:

সাধারণভাবে, অভিব্যক্তি:

if (typeof(variable) != "undefined" && variable != null)

সরলীকৃত করা যায় না, কারণ variableসম্ভবত অঘোষিত হতে পারে তাই বাদ typeof(variable) != "undefined"দেওয়া ফলাফলের ফলে ঘটবে ference তবে, আপনি প্রসঙ্গ অনুযায়ী অভিব্যক্তিটি সহজ করতে পারেন :

যদি বিশ্বব্যাপীvariable হয় তবে আপনি এটিকে সহজ করতে পারবেন:

if (window.variable != null)

যদি এটি স্থানীয় হয় তবে আপনি সম্ভবত এই পরিস্থিতি এড়াতে পারবেন যখন এই পরিবর্তনশীলটি অঘোষিত হয় এবং এটিকে আরও সরল করে তোলা:

if (variable != null)

যদি এটি বস্তুর সম্পত্তি হয় তবে আপনাকে রেফারেন্সঅরারের বিষয়ে চিন্তা করতে হবে না:

if (obj.property != null)

এর navigatorঅংশ window? যখন আমরা এর ব্যতিক্রম navigator is not definedপাই, আমরা কি window.navigator != nullপরীক্ষাটি ব্যবহার করতে পারি ?
jw

5

ভেরিয়েবলের কোনও মান আছে কি না তা আপনি কেবল পরীক্ষা করতে পারেন। অর্থ,

if( myVariable ) {
//mayVariable is not :
//null
//undefined
//NaN
//empty string ("")
//0
//false

}

কোনও ভেরিয়েবল বিদ্যমান কিনা তা যদি আপনি না জানেন (এর অর্থ এটি যদি ঘোষিত হয়) আপনার টাইপফোর অপারেটরের সাথে পরীক্ষা করা উচিত। যেমন

if( typeof myVariable !== 'undefined' ) {
    // myVariable will get resolved and it is defined
}

4

আমি এই পদ্ধতিটি ব্যবহার করে এটি করেছি

কিছু পরিবর্তনশীল মধ্যে আইডি সংরক্ষণ করুন

var someVariable = document.getElementById("someId");

শর্ত থাকলে ব্যবহার করুন

if(someVariable === ""){
 //logic
} else if(someVariable !== ""){
 //logic
}

3

উত্তরের একটিতে যেমন উল্লেখ করা হয়েছে, আপনি যদি ভাগ্যবান হয়ে উঠতে পারেন তবে আপনি যদি এমন একটি ভেরিয়েবলের কথা বলছেন যার একটি বিশ্বব্যাপী সুযোগ রয়েছে। আপনি জানেন যে, আপনি যে পরিবর্তনশীলগুলি বিশ্বব্যাপী সংজ্ঞায়িত করেন সেগুলি উইন্ডোজ অবজেক্টে যুক্ত হওয়ার প্রবণতা রয়েছে। আপনি এই সত্যটির সুবিধা নিতে পারেন তাই আপনি বলতে পারেন যে আপনি ব্লহ নামক একটি পরিবর্তনশীল অ্যাক্সেস করছেন, কেবল ডাবল ইনভার্টেড অপারেটর ব্যবহার করুন (!!)

!!window['bleh'];

এটি একটি মিথ্যা ফিরিয়ে দেবে, যদিও রক্তপাত ঘোষণা করা হয়নি এবং একটি মান নির্ধারণ করা হয়েছে।


3

অ্যারে ব্যবহার করে এখানে অন্য পদ্ধতিতে () পদ্ধতি অন্তর্ভুক্ত রয়েছে :

[undefined, null].includes(value)

এটি কাজ করে না! রেফারেন্সএরর: মান সংজ্ঞায়িত করা হয়নি
সাবেস্টিয়ান টেম্প্র্যাডো

1
আপনি যে মানটি পরীক্ষা করতে চান এটি হওয়া উচিত।
a2441918

2

যাহা আপত্তিহীন বা নাল যাই হোক না কেন , এটি সত্যই আসবে

if (typeof yyy == 'undefined' || !yyy) {
    console.log('yes');
} else {
    console.log('no');
}

হ্যাঁ

if (!(typeof yyy == 'undefined' || !yyy)) {
    console.log('yes');
} else {
    console.log('no');
}

না


2

আপনার ব্রাউজারে বিকাশকারী সরঞ্জামগুলি খুলুন এবং নীচের চিত্রটিতে প্রদর্শিত কোডটি চেষ্টা করুন।

Img1 Img2


2

বোঝার জন্য, আসুন বিশ্লেষণ করা যাক জাভাস্ক্রিপ্ট ইঞ্জিন দ্বারা অপরিশোধিত, নাল এবং '' (একটি খালি স্ট্রিংও) রূপান্তর করার সময় মান কী ফিরে আসবে। আপনি সরাসরি আপনার বিকাশকারী কনসোলে এটি পরীক্ষা করতে পারেন।

এখানে চিত্র বর্ণনা লিখুন

আপনি দেখতে পাচ্ছেন যে সবাই মিথ্যে রূপান্তর করছে, এর অর্থ এই তিনটিই জাভাস্ক্রিপ্ট দ্বারা 'অস্তিত্বের অভাব' ধরে নিচ্ছে are সুতরাং আপনার নীচের মত আপনার কোড তিনটি স্পষ্টভাবে চেক করার প্রয়োজন নেই।

if (a === undefined || a === null || a==='') {
    console.log("Nothing");
} else {
    console.log("Something");
}

এছাড়াও আমি আরও একটি বিষয় উল্লেখ করতে চাই।

বুলিয়ান (0) এর ফলাফল কী হবে?

অবশ্যই মিথ্যা। এটি আপনার কোডে একটি বাগ তৈরি করবে যখন 0 আপনার প্রত্যাশিত ফলাফলের বৈধ মান। সুতরাং আপনি কোডটি লেখার সময় দয়া করে এটি পরীক্ষা করে দেখুন this


2

আপনার যা আছে তার মতোই আপনিও এর মতো কিছু করতে পারেন

if (some_variable === undefined || some_variable === null) { do stuff }


2

এটি খুব বিরল অনুষ্ঠানের একটি উদাহরণ যেখানে এটির ==পরিবর্তে ব্যবহারের পরামর্শ দেওয়া হয় ===। এক্সপ্রেশন somevar == nullসত্য হিসাবে প্রত্যাশিত হবে undefinedএবং null, তবে অন্য সব কিছুর জন্য মিথ্যা (ভেরিয়েবল অঘোষিত হলে একটি ত্রুটি)।

!=প্রত্যাশা অনুযায়ী ফলটি ফ্লিপ করবে উইল ব্যবহার করে ।

আধুনিক সম্পাদকরা ব্যবহার ==বা !=অপারেটর ব্যবহারের জন্য সতর্ক করবেন না null, কারণ এটি প্রায়শই পছন্দসই আচরণ।

সর্বাধিক সাধারণ তুলনা:

undeffinedVar == null     // true
obj.undefinedProp == null // true
null == null              // true
0 == null                 // false
'0' == null               // false
'' == null                // false

এটি নিজে চেষ্টা করো:

let undefinedVar;
console.table([
    { test : undefinedVar,     result: undefinedVar     == null },
    { test : {}.undefinedProp, result: {}.undefinedProp == null },
    { test : null,             result: null             == null },
    { test : false,            result: false            == null },
    { test : 0,                result: 0                == null },
    { test : '',               result: ''               == null },
    { test : '0',              result: '0'              == null },
]);

0

ভেরিয়েবলের সংজ্ঞা স্থিতি পরীক্ষার চেয়ে নালুতা ( if (value == null)) বা নন-নুলিটি ( if (value != null)) পরীক্ষা করা কম ভার্বোস।

তদ্ব্যতীত, আপনার চলক (বা বস্তুর সম্পত্তি) এর অস্তিত্ব নিশ্চিত করতে পরীক্ষা if (value)(বা if( obj.property)) ব্যর্থ হয় যদি এটি বুলিয়ান falseমান দিয়ে সংজ্ঞায়িত করা হয়। ক্যাভেট সম্রাট :)


0

কঠোর তুলনা অপারেটরটি ব্যবহার করে উভয় মান সহজেই চিহ্নিত করা যায়:

এখানে কাজের উদাহরণ:

http://www.thesstech.com/tryme?filename=nullandundefined

কোডের উদাহরণ:

function compare(){
    var a = null; //variable assigned null value
    var b;  // undefined
    if (a === b){
        document.write("a and b have same datatype.");
    }
    else{
        document.write("a and b have different datatype.");
    }   
}

0

যদি ভেরিয়েবলের মান নির্ধারণের আগে যদি বিবৃতিটির উদ্দেশ্যটি পরীক্ষা করা হয় nullবা undefinedমানগুলি পরীক্ষা করা হয় তবে আপনি নুলিশ কোলসিং অপারেটরটি ব্যবহার করতে পারেন , শেষ পর্যন্ত জাভাস্ক্রিপ্টে উপলব্ধ, যদিও ব্রাউজার সমর্থন সীমাবদ্ধ। ক্যানিউজ থেকে প্রাপ্ত তথ্য অনুযায়ী , কেবলমাত্র 48.34% ব্রাউজারই সমর্থিত (2020 এপ্রিল পর্যন্ত)।

const a = some_variable ?? '';

এই নিশ্চিত করবে যে পরিবর্তনশীল একটি খালি স্ট্রিং (অথবা অন্য কোন ডিফল্ট মান) নির্ধারিত করা হবে যদি some_variableহয় nullবা undefined

এই অপারেটরটি আপনার ব্যবহারের ক্ষেত্রে সবচেয়ে উপযুক্ত, কারণ এটি অন্যান্য ধরণের মিথ্যা মান যেমন 0এবং এর জন্য ডিফল্ট মান দেয় না ''


-1

আপনাকে অবশ্যই এই ফর্মটির একটি ক্রিয়া সংজ্ঞায়িত করতে হবে:

validate = function(some_variable){
    return(typeof(some_variable) != 'undefined' && some_variable != null)
}

যদি ভেরিয়েবলটি অঘোষিত থাকে তবে এটি একই রেফারেন্স এরির তৈরি করবে।
চাদ

-1

ES5 বা ES6 এ আপনার যদি প্রয়োজন হয় এমন কয়েকবার পরীক্ষা করার প্রয়োজন হয়:

const excluded = [null, undefined, ''];

if (!exluded.includes(varToCheck) {
  // it will bee not null, not undefined and not void string
}


-1

রামদা দিয়ে, আপনি কেবল R.isNil(yourValue) লোডাশ এবং অন্যান্য সহায়ক লাইব্রেরিতে একই কাজ করতে পারেন।

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