কোনও ভেরিয়েবল নাল নয় কি করে তা পরীক্ষা করবেন?


285

আমি জানি যে জাভাস্ক্রিপ্টে ভেরিয়েবলটি কিনা তা যাচাই করার জন্য দুটি উপায় নীচে রয়েছে nullতবে আমি বিভ্রান্ত হয়ে পড়েছি যা ব্যবহারের সেরা অনুশীলন।

আমি কি উচিত:

if (myVar) {...}

অথবা

if (myVar !== null) {...}

উত্তর:


399

তারা সমতুল্য নয়। প্রথমটি ifযদি সত্যবাদী হয় ( myVarতবে শর্তসাপেক্ষে মূল্যায়ন করে true) বিবৃতি অনুসরণ করে ব্লকটি কার্যকর করবে , এবং দ্বিতীয়টি যদি ব্লকটি কার্যকর করে তবেmyVar অন্য কোনও মানnull

জাভাস্ক্রিপ্টে সত্যবাদী না হওয়া কেবলমাত্র মানগুলি নিম্নলিখিত (ওরফে মিথ্যা মান):

  • null
  • undefined
  • 0
  • "" (খালি স্ট্রিং)
  • false
  • NaN

69

ভেরিয়েবল নাল না হলে আপনি কীভাবে পরীক্ষা করতে পারবেন:

if (myVar !== null) {...}

যদি myVar নাল .. যদি myVar undefined হয় বা মিথ্যা বা মৃত্যুদন্ড কার্যকর করা হবে নয় ব্লক মৃত্যুদন্ড কার্যকর করা হবে 0বা NaNবা অন্য কিছু ..


1
যারা ভাবছেন তাদের ক্ষেত্রে ... এটি খালি স্ট্রিং ("")এবং অপরিজ্ঞাত জন্য পরীক্ষা করে না । রেফারেন্স হিসাবে আমার ফিডল দেখুন: jsfiddle.net/b0tm7yaf
ব্যারোসী

47

এই পোস্টে একটি পড়ুন: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

এটিতে জাভাস্ক্রিপ্টের জন্য কয়েকটি দুর্দান্ত টিপস রয়েছে তবে একটি জিনিস এর উল্লেখ করে তা হ'ল আপনার নাল মতো পরীক্ষা করা উচিত:

if(myvar) { }

এটি 'মিথ্যা' বলে বিবেচিত তা উল্লেখ করে যা আপনি বুঝতে পারেন না।


33
এই চেকটি আসলে নিরাপদ নয়। যদি মাইভার 0 হয়, মিথ্যা বা অন্য কোনও মিথ্যা মান পরীক্ষাটি ব্যর্থ হবে (যদি আপনি কেবল নাল না যাচাই করার উদ্দেশ্যে থাকেন)। সুতরাং ভেরিয়েবলের আর কখনও মিথ্যা মান থাকতে না পারলে কেবল নাল নয় তা পরীক্ষা করতে এটি ব্যবহার করুন।
Werzi2001

2
লিঙ্কটি আর কাজ করে না। পোস্টটি এখানে কী প্রদর্শিত হবে তার একটি অনুলিপি আমি এখানে পেয়েছি: appendto.com/2010/10/… যদিও এটি আশ্চর্যজনক, কারণ এলিয়াহর পোস্টটি (এবং নমুনা কোড) পরামর্শ দেয় যে তিনি লেখক, তবে তিনি সেখানে লেখক হিসাবে তালিকাভুক্ত নন ...
thepaulpage

2
দেখে মনে হচ্ছে যে সাইটটি আর নেই। এটি সহায়ক হবে যদি আপনি কেবলমাত্র একটি বাহ্যিক লিঙ্কের চেয়ে পোস্টটিতে তথ্য অন্তর্ভুক্ত করতে পারেন।
এপ্রিয়েটার

মানটি উপস্থিত থাকলে এটি কাজ করবে না তবে 0 (শূন্য)
zmechanic

15
  • আপনার অভ্যন্তরের কোডটি if(myVar) { code }কেবল তখন myVarসমান হলে কার্যকর করা হবে না : false, 0, "", null, undefined, NaNবা আপনি কখনই ভেরিয়েবল সংজ্ঞায়িত করেন না myVar(তারপরে কোডটি এক্সপেকিউড স্টপ এবং ব্যতিক্রম নিক্ষেপ)।
  • আপনার অভ্যন্তরীণ কোডটি if(myVar !== null) {code}কেবল তখনই কার্যকর হবে না যখন আপনি এর myVarসমান হন nullবা আপনি কখনই এটি সংজ্ঞায়িত করেন না (ব্যতিক্রম ছোঁড়ে)।

এখানে আপনার সমস্ত ( এসসিআর ) রয়েছে

যদি

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

== (এর অবহেলা ! = )

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

=== (এর অবহেলা ! == )

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


9

আমি সবেমাত্র এসেছি এমন আরও একটি সম্ভাব্য দৃশ্য রয়েছে।

আমি একটি এজাক্স কল করেছি এবং একটি স্ট্রিং ফর্ম্যাটে নাল হিসাবে তথ্য ফিরে পেয়েছি। আমাকে এটি পরীক্ষা করে দেখতে হয়েছিল:

if(value != 'null'){}

সুতরাং, নাল একটি স্ট্রিং যা "নাল" পড়ার পরিবর্তে সত্যই নাল হওয়ার চেয়ে বেশি ছিল।

সম্পাদনা: এটি বুঝতে হবে যে আমি এটি যেভাবে করা উচিত সেভাবে বিক্রি করছি না । আমার এমন দৃশ্য ছিল যেখানে এটি করা সম্ভব ছিল। আমি নিশ্চিত না কেন ... সম্ভবত যে লোকটি ব্যাক-এন্ড লিখেছিল সে ডেটা ভুলভাবে উপস্থাপন করছে, তবে নির্বিশেষে, এটিই আসল জীবন। এটি হ'ল হতাশাব্যঞ্জক যে কেউ এমনটি বুঝতে পেরেছেন যে এটি একেবারেই সঠিক নয় এবং তারপরে সত্যিকারের পক্ষে সহায়তা করে এমন কাউকে ভোট দিয়েছিলেন।


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

1
আপনি যদি এর প্রয়োগটি বুঝতে চান বা না করেন তবে এই উত্তরটি বৈধ। আসলে কাজ করে এমন জিনিস পোস্ট করার জন্য আমি কমে যাওয়া প্রশংসা করি না। আপনি এটি স্পর্শ করার আগে কি এটি লক্ষ্য করে দেখেছেন? কারণ এটি একটি বাস্তব দৃশ্য।
ফ্ল্যাট বিড়াল

3
হ্যাঁ, এবং আমি হ্রাস পেয়েছি কারণ আমি মনে করি এটির ভুল সমাধান। আজাক্স কলের ক্ষেত্রে আপনার আরও ভাল করা উচিত value = JSON.parse(value)এবং তারপরে সহজ এবং সঠিক value != nullপরীক্ষাটি ব্যবহার করা উচিত
বার্গি

2
স্পষ্টতই আপনি বুঝতে পারেন না। আমি বুঝতে পেরেছি আপনি মনে করেন আপনি করেন তবে আপনি করেন না।
ফ্ল্যাট বিড়াল

4
আমি বুঝতে পারি যে এটি একটি কার্যকরী সমাধান ছিল। তবে আমি এটি ভাল পরামর্শ বলে মনে করি না, তাই দয়া করে আমার ডাউনটাতে শ্রদ্ধা করুন।
বার্জি


1

কখনও কখনও এটি সংজ্ঞায়িত না হলেও প্রস্তুত করা ভাল। এর জন্য আমি টাইফফ ব্যবহার করেছি

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}

-4

আপনি এখানে দুটি তালিকাভুক্ত শর্তাধীন বিবৃতি একে অপরের চেয়ে ভাল না। আপনার ব্যবহার পরিস্থিতির উপর নির্ভর করে। ২ য় উদাহরণ হিসাবে আপনার কাছে টাইপ রয়েছে। বিস্মৃত চিহ্নের পরে কেবল একটি সমান চিহ্ন থাকতে হবে।

1 ম উদাহরণটি নির্ধারণ করে যে মাইভারের মানটি সত্য কিনা এবং {...} এর ভিতরে কোডটি কার্যকর করে ?

২ য় উদাহরণ মূল্যায়ন করে যদি মাইভিয়ার নাল সমান না হয় এবং যদি কেসটি সত্য হয় তবে এটি আপনার কোডটি inside ...} এর মধ্যে কার্যকর করবে

আমি আরও কৌশলগুলির জন্য শর্তাধীন বিবৃতি একবার দেখে পরামর্শ দিই। আপনি যখন তাদের সাথে পরিচিত হন, আপনি তাদের কখন প্রয়োজন হবে তা সিদ্ধান্ত নিতে পারেন।


12
এটি সম্ভবত দ্বিতীয় উদাহরণের মধ্যে টাইপ নয়। দ্বিতীয়টিটি =অত্যন্ত গুরুত্বপূর্ণ এবং প্রশ্নটিতে একটি বিশাল পার্থক্য তৈরি করে। সম্ভবত আপনি জাভাস্ক্রিপ্টে !==এবং ===অপারেটরদের অস্তিত্ব সম্পর্কে সচেতন না ?
টিম ডাউন

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