কোনও চলক 'অপরিজ্ঞাত' বা 'নাল' কিনা তা আমি কীভাবে নির্ধারণ করতে পারি?


2124

আমি কিভাবে নির্ধারণ না হলে পরিবর্তনশীল undefinedবা null?

আমার কোডটি নিম্নরূপ:

var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
  // DO SOMETHING
};
<div id="esd-names">
  <div id="name"></div>
</div>

তবে আমি যদি এটি করি তবে জাভাস্ক্রিপ্ট ইন্টারপ্রেটার কার্যকর করা বন্ধ করে দেয়।


উত্তর:


2844

এটি করতে আপনি বিমূর্ত সাম্য অপারেটরের গুণাবলী ব্যবহার করতে পারেন :

if (variable == null){
    // your code here.
}

কারণ null == undefinedসত্য, উপরের কোড উভয় ফেলবো nullএবং undefined


5
আমি যদি
ফায়ার ফক্সে

3
@ মিশেলফাইভার কীভাবে এটি কাজ করে না? আপনার কনসোলে const y = undefined; y == null;এটি অনুলিপি করুন: এটি ফিরে আসবেtrue
সেফ

2
@ ক্রিসট্রিস্টাইজেনস্কি আপনার মন্তব্য থেকে উদাহরণস্বরূপ আপনি yধ্রুবক হিসাবে ঘোষণা করেছেন , তবে আপনি তুলনা abc(না y) তুলনা করেন । আমি যখন Chrome এবং ফায়ারফক্সের yমাধ্যমে পরীক্ষা console.log(y == null);করেছি তখন trueফলস্বরূপ পেলাম । আপনি যদি ত্রুটি পেয়ে থাকেন তবে সম্ভবত =তুলনার পরিবর্তে আপনি অ্যাসাইনমেন্ট অপারেটরটি ব্যবহার করার চেষ্টা করেছেন ==যা constপুনরায় বরাদ্দ দেওয়া যাবে না বলে ত্রুটি ফিরে পাওয়ার অর্থ হবে।
Pshemo

2
প্রাসঙ্গিক তুলনা লাইভ উদাহরণ । lgtm।
রায়ান হেইনিং

2
@ জায়টসেভ ডিমেট্রি ভেরিয়েবলের সমান হলে আপনি কেন পরীক্ষা আশা করবেন nullবা undefinedপাস করতে হবে 0? প্রশ্নটি সত্যবাদী মানের জন্য পরীক্ষার বিষয়ে নয়, বরং এর জন্য nullবা এর জন্য স্পষ্টভাবে পরীক্ষা করা undefined
রডরিগো-সিলভিরা

1106

একই সাথে ধরার nullএবং স্ট্যান্ডার্ড উপায় undefinedহ'ল:

if (variable == null) {
     // do something 
}

- যা আরও স্পষ্ট কিন্তু কম সংক্ষিপ্ততার সাথে 100% সমতুল্য:

if (variable === undefined || variable === null) {
     // do something 
}

পেশাদার জেএস লেখার সময়, এই ধরণের সাম্যতা এবং ==বনামের আচরণ=== বোঝা যায় granted অতএব আমরা ব্যবহার করি ==এবং কেবল তুলনা করি null


আবার সম্পাদনা করুন

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

আপনার কোডে অঘোষিত ভেরিয়েবলগুলির জন্য আপনার কোনও রেফারেন্স থাকা উচিত নয়।


47
টাইপফ ব্যবহারটি নিরাপদ হলে ভেরিয়েবল সংজ্ঞায়িত বা কোডে মোটেও উল্লেখ না করা থাকলে এটি একটি রেফারেন্সঅরারের এবং ব্রেক ব্রেক কার্যকর করতে পারে।
মণি গন্ধম

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

6
হ্যাঁ আপনি !==পরিবর্তে লিখেছিলেন কারণ !=
অস্থায়ী_ ব্যবহারকারী_নাম

9
-ওপ: এই তুলনাগুলি "100% সমতুল্য" হবার বিষয়ে বিবৃতিটি সরল ভুল, যেমন আপনি নিজের ইডিআইটিতে উল্লেখ করেছেন, দ্বিতীয়টি একটি রেফারেন্সঅরারের কারণ ঘটবে। প্রতিপত্তি হিসাবে: "আপনার কোডে অঘোষিত ভেরিয়েবলগুলির কোনও উল্লেখ আপনার থাকা উচিত নয়" " সত্যি? কখনও heardচ্ছিক পরামিতি শুনেছেন? jsfiddle.net/3xnbxfsu
টিমোথি কানস্কি

16
@ টিমোথিকানস্কি optionচ্ছিক পরামিতিগুলি অপরিবর্তিত হতে পারে যদি তারা optionচ্ছিকভাবে সরবরাহ না করা হয় তবে তারা অবশ্যই স্পষ্টভাবে ঘোষিত ভেরিয়েবল হিসাবে ঘোষণা করে। এগুলি ঘোষিত হয় এবং এর কোনও মান থাকে undefined, যেমন কোনও ঘোষিত তবে অবিচ্ছিন্ন ভেরিয়েবল যেমন হয়, var someVar;সুতরাং আপনার যুক্তিটি সত্যই ধরে না
chiliNUT

227

উপরের উত্তরগুলি একত্রিত করে মনে হচ্ছে সর্বাধিক সম্পূর্ণ উত্তরটি হবে:

if( typeof variable === 'undefined' || variable === null ){
    // Do stuff
}

এটি অঘোষিত বা ঘোষিত এবং স্পষ্টভাবে নাল বা অপরিজ্ঞায়িত সেট থাকা কোনও চলকের পক্ষে কাজ করা উচিত। বুলিয়ান এক্সপ্রেশনটি এমন কোনও ঘোষিত ভেরিয়েবলের মিথ্যা হিসাবে মূল্যায়ন করা উচিত যার আসল অ-নাল মান রয়েছে।


2
@ অ্যারোভিস্টে আমি স্বীকার করেছি যে typeofএটি একটি অপারেটর, কোনও ফাংশন নয়, সুতরাং এটির প্রথম বন্ধনী প্রয়োজন নেই, তবে আমি স্পষ্টতাই পড়ার জন্য - তবে বন্ধনীগুলির প্রশংসা করি।
ব্যবহারকারী 664833

1
টাইপফ ব্যবহার না করে সরাসরি (পরিবর্তনশীল === অপরিবর্তিত) যাচাইয়ের বিষয়ে কী?
হিমায়িত ক্রাইওন

2
@ আর্জুনু যদি ভেরিয়েবলটি ঘোষণা না করা হয় তবে এটি একটি রেফারেন্সআরারের কারণ ঘটবে। ভেরিয়েবল ঘোষিত হয়েছে কিনা তা আপনি যদি না জানেন তবে উপরের সমাধানটি ব্যবহার করুন। যদি আপনি গ্যারান্টি দিতে পারেন যে চলকটি কমপক্ষে ঘোষিত হয়েছে তবে আপনি ব্যবহার করতে পারেনvariable == null
Rogue

3
এটি আরও ভাল সমাধান কারণ @ রোগটি নির্দেশিত হিসাবে, ভেরিয়েবলটি ঘোষিত হতে পারে না।
আব্দুল সাদিক ইয়ালসিন

আমি ভুল হলে আমাকে সংশোধন করুন, তবে প্রথম শর্তসাপেক্ষে দ্বিতীয়টির সুপারস্টেট নয়, এবং তাই দ্বিতীয় শর্তসাপেক্ষ অতিরিক্ত অতিরিক্ত?
মার্চ হো

186
if (variable == null) {
    // Do stuff, will only match null or undefined, this won't match false
}

14
কেবলমাত্র যদি কেউ মনে করে যে এটি অন্য অর্ধ-উত্তর, এটি আসলে কাজ করে। undefinedসমান মূল্যায়ন null
চক

3
ক্রোম কনসোলে আমার কাছে ব্যর্থ হয়েছে ... রেফারেন্সএরর: ভেরিয়েবল সংজ্ঞায়িত করা হয়নি, সুতরাং এটি কার্যকর হতে পারে তবে আমার জন্য নয় ...
ইরান মেডান

48
এটি কেবল ঘোষিত ভেরিয়েবলের জন্য কাজ করে, ভেরিয়েবল নয় যা ঘোষিত হতে পারে বা নাও ঘোষণা করা যায়, যা খুব কমই ঘটে। (আপনাকে এই ক্ষেত্রে

11
শুধু মূর্ত আউট : আপনার এই মন্তব্যটি যোগ করতে পারেন /*jshint eqnull:true */আপনার জাতীয় দস্তাবেজ বা ফাংশন শীর্ষে, এবং JSHint আপনার ব্যবহার করে সে সম্পর্কে তোমাকে সতর্ক করা বন্ধ করে দেবে == null
ওয়েব_ডিজাইনার

3
@ অ্যারোভিস্টে আপনি কি আমাকে এমন একটি রেফারেন্সের দিকে ইঙ্গিত করতে পারেন যা স্পষ্টভাবে জানিয়েছে যে ==ভেঙে গেছে। if(variable == null)এই উত্তরের জবরদস্তি আমাকে পুরোপুরি বোঝায় ...
বেন অ্যাস্টন

93
if (typeof EmpName != 'undefined' && EmpName) {

মানটি যদি সত্য না হয় তবে তা মূল্যায়ন করবে:

  • খালি

  • অনির্দিষ্ট

  • NaN

  • খালি স্ট্রিং ("")

  • 0

  • মিথ্যা


13
আমি মনে করি এটি একটি বিপজ্জনক কৌশল যা বন্য আগুনের মতো ছড়িয়ে পড়েছে। কারণ অনেকগুলি ভেরিয়েবলগুলি যাচাই করা হয় তা বুলিয়ান বা সংখ্যাগুলি হতে পারে। সুতরাং যদি ব্যবহারকারী সম্পূর্ণরূপে ফলাফলগুলি বুঝতে না পারে তবে এটি কোনও ভাল।
দরকারী

দয়া করে এই জাভাস্ক্রিপ্ট স্পেসিফিকেশনের একটি রেফারেন্স সরবরাহ করুন
ভিলমেজিয়ার

1
এই হিসাবে একই if (EmpName)। যদি এটি undefinedইতিমধ্যে মিথ্যা হবে।
রুডি

পরিবর্তনশীল সংজ্ঞায়িত না হলে। তারপরে যদি (এম্পনাম) ত্রুটি ছুঁড়ে ফেলবে
থমরাইসেলভাম

1
@ থমরাইসেলভাম আমার মতে রুডি এর অর্থ হতে পারে var EmpName; if (EmpName)। যেখানে ভেরিয়েবল সংজ্ঞায়িত করা হয় তবে মান নির্ধারিত হয় না।
হাঙ্গারস্টার

27

jQuery এর attr()ফাংশন আয় হয় একটি ফাঁকা স্ট্রিং বা প্রকৃত মান (এবং কখনও nullবা undefined)। এটি কেবলমাত্র একবার আসে undefinedযখন আপনার নির্বাচক কোনও উপাদান ফেরত দেয় না।

সুতরাং আপনি একটি ফাঁকা স্ট্রিংয়ের বিরুদ্ধে পরীক্ষা করতে চাইতে পারেন। বিকল্পভাবে, যেহেতু ফাঁকা স্ট্রিং, নাল এবং অপরিজ্ঞাতটি মিথ্যা-ওয়াই তাই আপনি কেবল এটি করতে পারেন:

if (!EmpName) { //do something }

1
ক্রোম 17.0.963.78 মি এই ত্রুটিটি দেয়:ReferenceError: EmpName is not defined
মেডান

6
@ ইরানমেদান আমি জানি এটি দেরী হয়েছে তবে আশা করি এটি এখানে যারা পরে আসবেন তাদের সহায়তা করবে। আপনি কোনও ত্রুটি পাওয়ার কারণ হ'ল এটি একেবারেই ঘোষণা করা হয়নি। সাধারণত আপনি এমম্পনেম (বা অন্য কোনও পরিবর্তনশীল) কোনও ফাংশনে পাস করতে চান, বা অন্য ফাংশনের রিটার্ন মান এবং সুতরাং ঘোষণা করেছেন (উদাহরণ: "var x;")। এটি অপরিশোধিত, বা নাল, বা ফাঁকা স্ট্রিং ফিরে এসেছে কিনা তা পরীক্ষা করতে আপনি উপরের সমাধানটি ব্যবহার করতে পারেন।
ডেভ

আমি বুঝতে পারছি এটি একটি ঠান্ডা প্রশ্ন, তবে undefinedউপাদানটিতে অ্যাট্রিবিউটটি উপস্থিত না থাকলে jQuery ফিরে আসবে (কেবল উত্তর হিসাবে নির্বাচকটির কোনও মিলের উপাদান নেই)। উদাহরণস্বরূপ, যদি একটি imgসঙ্গে srcফিরে আসবে undefinedজন্য$('img').attr('src');
codinghands

19

আমি এই জন্য আমার নিজের ফাংশন লিখতে এসেছি। জাভাস্ক্রিপ্ট অদ্ভুত।

এটি আক্ষরিক যে কোনও কিছুর জন্য ব্যবহারযোগ্য। (দ্রষ্টব্য যে এটিতেও ভেরিয়েবলের কোনও ব্যবহারযোগ্য মান রয়েছে কিনা তা যাচাই করে But তবে যেহেতু সাধারণত এই তথ্যটিও প্রয়োজন হয় তাই আমি মনে করি এটি পোস্ট করার উপযুক্ত)। একটি নোট রেখে বিবেচনা করুন।

function empty(v) {
    let type = typeof v;
    if (type === 'undefined') {
        return true;
    }
    if (type === 'boolean') {
        return !v;
    }
    if (v === null) {
        return true;
    }
    if (v === undefined) {
        return true;
    }
    if (v instanceof Array) {
        if (v.length < 1) {
            return true;
        }
    } else if (type === 'string') {
        if (v.length < 1) {
            return true;
        }
        if (v === '0') {
            return true;
        }
    } else if (type === 'object') {
        if (Object.keys(v).length < 1) {
            return true;
        }
    } else if (type === 'number') {
        if (v === 0) {
            return true;
        }
    }
    return false;
}

টাইপ করা বিষয় সামঞ্জস্যপূর্ণ।


এই ফাংশনটি পিএইচপি-র ফাংশনের মতো ঠিক একই জিনিস করা উচিত (দেখুন )empty()RETURN VALUES

বিবেচনা করে undefined, null, false, 0, 0.0, "0" {}, []যেমন খালি।

"0.0", NaN, " ", trueখালি নয় এমন মনে করা হয়।


2
আমি কিছুটা নাল চেক করার সমস্যায় পড়েছি। আমি যাচাই করতে চাই যে কোনও প্যারামিটারটি পাস হচ্ছে তা নাল, বা একটি খালি বস্তু কিনা { }। এটি একটি সাধারণ এবং নির্বোধ ভাষা সমস্যা, তবে আমি এটি সম্পর্কে ভুলে গিয়েছিলাম। আমার সমস্ত অনুসন্ধান নাল মান, বা আলগা সমতা তুলনা (==), কিন্তু কঠোর সমতা (===) বা সমতুল্য নয় এর উত্তর দেখায়। এবং তারপরে এখানে পৃষ্ঠার একেবারে নীচে আপনার -1 স্থানের উত্তরটিতে (আমি উন্নয়নের আগে) উত্তরটি আমাকে সরিয়ে দিয়েছে। Object.keys( obj ).length < 1বা হতে পারে === 0, ধরে নিচ্ছি এটি কখনই -1 হবে না। যাইহোক, উর্ধ্বতন 0, : পি

ধন্যবাদ, আমি এই ফাংশনটি ড্রপ করতে এবং প্রচুর কোড সাফ করতে সক্ষম হয়েছি। এটি কেন একটি স্ট্যান্ডার্ড জেএস ফাংশন নয় beyond
অ্যান্ডি

3
আপনি পরিবর্তন করা উচিত সব আপনার এর ==জন্য ===এখানে তারপর এই একটি যুক্তিসঙ্গত ফাংশন হবে।
বেন ম্যাকআইন্টির

12

আপনি যে পরিবর্তনশীলটি যাচাই করতে চান তা যদি বিশ্বব্যাপী হয়, তবে করুন

if (window.yourVarName) {
    // Your code here
}

yourVarNameভেরিয়েবলের অস্তিত্ব না থাকলেও এই পরীক্ষার উপায়টি ত্রুটি ছুঁড়ে ফেলবে না ।

উদাহরণ: আমি জানতে চাই যে আমার ব্রাউজারটি ইতিহাসের এপিআই সমর্থন করে কিনা

if (window.history) {
    history.back();
}

এটি কীভাবে কাজ করে:

windowএমন একটি বস্তু যা সমস্ত গ্লোবাল ভেরিয়েবলগুলিকে এর বৈশিষ্ট্য হিসাবে ধরে রাখে এবং জাভাস্ক্রিপ্টে এটি কোনও অ-বিদ্যমান বস্তুর সম্পত্তি অ্যাক্সেস করার চেষ্টা করা আইনী। তাহলে historyতারপর বিদ্যমান নয় window.historyআয় undefinedundefinedমিথ্যা, সুতরাং একটি if(undefined){}ব্লকের কোড চলবে না।


2
পাঠকদের মনে রাখা উচিত যে ব্রাউজারে চলমান জাভাস্ক্রিপ্ট থেকে - কোনও বৈশ্বিক ভেরিয়েবল ঘোষিত হয়েছে কিনা এবং বিশেষত ব্রাউজার-সরবরাহিত গ্লোবাল (ইতিহাসের এপিআই-এর মতো) উপলভ্য কিনা তা পরীক্ষা করার জন্য এই জাতীয় দৃষ্টিভঙ্গি যাচাই করার জন্য মূর্তিমান । এটা তোলে কাজ না করবে কিনা তা পরীক্ষা করে একটি অ-বিশ্বব্যাপী পরিবর্তনশীল জন্য nullবা undefined, না এটা কাজ যদি আপনার জাভাস্ক্রিপ্ট (অর্থাত Node.js) একটি ব্রাউজারের বাইরে চলমান হবে। এছাড়া আচরণ globals সেট হবে 0, falseবা ''যারা যা বা অঘোষিত না হয় হিসাবে একই undefinedবা null, যা সাধারণত জরিমানা।
মার্ক আমেরিকা 5'15

এটি ধরে নেওয়া হয় যে স্ক্রিপ্টটি একটি ব্রাউজারে চলছে। এটি প্রদত্ত নয়।
গ্রিনএজজেড

12

সবচেয়ে সংক্ষিপ্ত এবং সহজ:

if(!EmpName ){
 // DO SOMETHING
}

এমপনেম হলে এটি সত্য বলে মূল্যায়ন করবে:

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

3
এখানে ব্যবহারের কেসটি হ'ল আমি অপরিজ্ঞাত ও মিথ্যাটির মধ্যে পার্থক্য জানতে চাই। আমি তখন চেকটি নালিতে ব্যবহার করব।
গ্যাস্ট 128

11

সম্ভবত এটি করার সবচেয়ে সংক্ষিপ্ততম উপায়:

if(EmpName == null) { /* DO SOMETHING */ };

এখানে প্রমাণ:

এবং এখানে ==(উত্স এখানে ) সম্পর্কে আরও বিশদ

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

বোনাস : কারণের ===চেয়ে আরও স্পষ্ট কারণ ==( এ.সি.সি. উত্তর দেখুন )

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


8

আমি ঠিক এই সমস্যাটি পেয়েছি অর্থাৎ কোনও বস্তু নাল কিনা তা পরীক্ষা করে দেখছি।
আমি কেবল এটি ব্যবহার করি:

if (object) {
    // Your code
}

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

if (document.getElementById("enterJob")) {
    document.getElementById("enterJob").className += ' current';
}

3
var A = document.getElementById ("enterJob") সেট করা আরও ভাল হবে যদি (A) A.className + = 'বর্তমান'; এইভাবে আপনি একই ফলাফলের জন্য 50% কাজ করেন ... তবে সম্ভবত আপনি কেবল এটি অনুষ্ঠানের জন্য করেছেন এবং তারপরে আমি সালাম জানাই।
হ্যারি সোভেনসন

7

যেহেতু আপনি jQuery ব্যবহার করছেন , আপনি কোনও একক ফাংশন ব্যবহার করে কোনও ভেরিয়েবল অপরিজ্ঞাত বা তার মান নালার তা নির্ধারণ করতে পারেন।

var s; // undefined
jQuery.isEmptyObject(s); // will return true;

s = null; // defined as null
jQuery.isEmptyObject(s); // will return true;

// usage
if(jQuery.isEmptyObject(s)){
    alert('Either variable: s is undefined or its value is null');
}else{
     alert('variable: s has value ' + s);
}

s = 'something'; // defined with some value
jQuery.isEmptyObject(s); // will return false;

এটি আমার পক্ষে কার্যকর হয়নি। আমি এখনও ত্রুটি পেয়েছি: ReferenceError: s is not definedপ্রথম উদাহরণ হিসাবে for
চিহ্নিত করুন

5

jQuery চেক উপাদান বাতিল নয়:

var dvElement = $('#dvElement');

if (dvElement.length  > 0) {
    // Do something
}
else{
    // Else do something else
}

4

জাভাস্ক্রিপ্টে, আমার জ্ঞান অনুসারে, আমরা নীচের মতো একটি অপরিজ্ঞাত, নাল বা খালি ভেরিয়েবল পরীক্ষা করতে পারি।

if (variable === undefined){
}

if (variable === null){
}

if (variable === ''){
}

সমস্ত শর্ত পরীক্ষা করুন:

if(variable === undefined || variable === null || variable === ''){
}

varএকটি সংরক্ষিত শব্দ, এটি নিক্ষেপ করবেSyntaxError
ধিল্ট

4

আপনি কেবল নিম্নলিখিতটি ব্যবহার করতে পারেন (আমি জানি এটি করার জন্য আরও ছোট উপায় রয়েছে তবে এটি দৃশ্যত পর্যবেক্ষণ করা সহজতর করতে পারে, কমপক্ষে অন্যদের জন্য কোডটি দেখছেন)।

if (x === null || x === undefined) {
 // Add your response code here, etc.
}

3

চেক করার সহজতম উপায় হ'ল:

if(!variable) {
  // If the variable is null or undefined then execution of code will enter here.
}

1
ভেরিয়েবলের মান থাকলে এটি কোড সম্পাদন করবে falseযা সম্ভাব্য অবাঞ্ছিত।
বাইসোর

প্রশ্নটি পরিষ্কার "ভেরিয়েবলটি 'অপরিজ্ঞাত' বা 'নাল' কিনা তা কীভাবে নির্ধারণ করবেন?" এবং জাভাস্ক্রিপ্টে যদি কোনও ভেরিয়েবলের নাল বা অপরিজ্ঞাত মান থাকে তবে এর মানটি মিথ্যা।
এম। আর্নল্ড

1
দুঃখিত, তবে এটি ভুল। এটি প্রমাণ করার জন্য এখানে একটি জেএসফিডাল
বাইসোর

আপনার উত্তর, কসম undefined, null এবং খালি স্ট্রিং, +0 মত কয়েক অন্যান্য বিষয়, -0 NaNএবং falseমাধ্যমে পেতে। !অপারেটর অপারেন্ডকে এখানে Coleces variable- এখানে বুলিয়ান: ecma-international.org/ecma-262/#sec-toboolean
আলিরেজা

তবে প্রশ্নটি পরীক্ষা করুন: "কোনও পরিবর্তনশীল অপরিজ্ঞাত বা নাল কিনা তা কীভাবে নির্ধারণ করবেন", দ্য! যদি একটি চলকটি নাল বা সংজ্ঞায়িত হয় তবে অপেরেন্ডটি সর্বদা সত্যে ফিরে আসবে if
এম আর্নল্ড

2

নীচের সমাধান সহ:

const getType = (val) => typeof val === 'undefined' || !val ? null : typeof val;
const isDeepEqual = (a, b) => getType(a) === getType(b);

console.log(isDeepEqual(1, 1)); // true
console.log(isDeepEqual(null, null)); // true
console.log(isDeepEqual([], [])); // true
console.log(isDeepEqual(1, "1")); // false
etc...

আমি নিম্নলিখিতগুলির জন্য যাচাই করতে সক্ষম:

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

এটি প্রশ্নের উত্তর দেয় না, যা "আমি কীভাবে নাল এবং সংজ্ঞায়িত করব?" না "আমি কীভাবে জাভাস্ক্রিপ্টের প্রতিটি মিথ্যা মান ধরব?"
অস্থায়ী_ ব্যবহারকারী_নাম

@ অ্যারোভিস্টে, আমি ভেবেছিলাম আমি কনসোল.লগ দিয়েছি (isDipEqual (নাল, নাল)); এবং কনসোল.লগ (isDeepEqual (অপরিজ্ঞাত, অপরিজ্ঞাত)); ?
টনি তাই নিগুইন

1

কোনও ভেরিয়েবল নাল বা অপরিজ্ঞাত কিনা তা পরীক্ষা করতে আমি নীচের কোডটি ব্যবহার করি।

    if(typeof sVal === 'undefined' || sVal === null || sVal === ''){
      console.log('variable is undefined or null');
    }

বন্ধ কিন্তু না হারান typeofএবং undefinedসরাসরি স্ট্রাইটে তুলনা করুন , স্ট্রিং হিসাবে নয়। এটি কাজ করে তবে অতিরিক্ত অপারেটরটির এটিকে আরও শব্দযুক্ত করে তোলার কোনও প্রভাব নেই।
অস্থায়ী_ ব্যবহারকারী_নাম

এই ক্ষেত্রে হ্যাঁ আপনি ঠিক বলেছেন আমাদের টাইফফ ব্যবহার করার দরকার নেই। আপনি যখন অপরিজ্ঞাত ভেরিয়েবলগুলি নিয়ে কাজ করছেন তখন টাইপফ ব্যবহার করা ভাল অনুশীলন। টাইপফ ব্যবহার করার একটি কারণ হ'ল ভেরিয়েবলটি ঘোষণা না করা হলে এটি ত্রুটি ছুঁড়ে না ফেলে।
ডানকোডি

আসলে এটি একটি খারাপ জিনিস। আপনি আপনার কোডে অঘোষিত ভেরিয়েবলগুলি চান না। আপনি চাইছেন যে এটি একটি রেফারেন্স এয়ারার নিক্ষেপ করুন যাতে আপনি ভেরিয়েবলটি খুঁজে পেতে এবং এটি ঘোষণা করতে পারেন। অবশ্যই আপনি সি ++ এর মতো সংকলিত ভাষায় চেষ্টা করবেন না! জেএস এটির অনুমতি দেয় বলেই এটি করা উচিত।
অস্থায়ী_ ব্যবহারকারী_নাম

1
আপনার বা বিবৃতি পিছনের দিকে। কিছু অপরিবর্তিত রয়েছে তা পরীক্ষা করা প্রথম পদক্ষেপ হবে, দ্বিতীয় নয়।
অ্যান্টনি রটলেজ

1

আমি এই পরীক্ষাটি ক্রোম কনসোলে চালিত করি। (শূন্য 0) ব্যবহার করে আপনি অপরিশোধিত পরীক্ষা করতে পারেন:

var c;
undefined
if (c === void 0) alert();
// output =  undefined
var c = 1;
// output =  undefined
if (c === void 0) alert();
// output =   undefined
// check c value  c
// output =  1
if (c === void 0) alert();
// output =  undefined
c = undefined;
// output =  undefined
if (c === void 0) alert();
// output =   undefined

1

আসুন এটি দেখুন,

  1.  

    let apple; // Only declare the variable as apple
    alert(apple); // undefined

    উপরের ক্ষেত্রে, চলকটি কেবল হিসাবে ঘোষণা করা হয় apple। এই ক্ষেত্রে, আমরা যদি পদ্ধতিটি কল করি তবে alertএটি অপরিজ্ঞাত প্রদর্শিত হবে।

  2.  

       let apple = null; /* Declare the variable as apple and initialized but the value is null */
       alert(apple); // null

দ্বিতীয়টিতে এটি নাল প্রদর্শন করে, কারণ appleমানের পরিবর্তনশীল নাল।

সুতরাং আপনি কোনও মান অপরিবর্তিত বা নাল কিনা তা পরীক্ষা করতে পারেন।

if(apple !== undefined || apple !== null) {
    // Can use variable without any error
}

0

সবচেয়ে ভালো উপায়:

if(typeof variable==='undefined' || variable===null) {

/* do your stuff */
}

6
ঠিক এই সমাধান ইতিমধ্যে অক্টোবর 11, 2013 উপর @jkindwall দ্বারা সরবরাহ করা হয়েছিল stackoverflow.com/a/19323555/2943403 এটি কেবলমাত্র কোড-পোস্ট সম্পূর্ণ অকেজো কারণ এটি পৃষ্ঠা থেকে আপনাকে কোন নতুন মান যোগ করে। প্রকৃতপক্ষে, এটি পৃষ্ঠা ব্লাট যুক্ত করছে এবং এটি পড়ার সময় গবেষকদের নষ্ট করছে। দয়া করে এই উত্তরটি সরান।
মিকম্যাকুসা


0
var i;

if (i === null || typeof i === 'undefined') {
    console.log(i, 'i is undefined or null')
}
else {
    console.log(i, 'i has some value')
}

3
যদি ব্যবহারকারী 'অপরিজ্ঞাপিত' শব্দটি প্রবেশ করে তবে কী হবে?
চক

আপনার প্রশ্নটি ভাল, এটি শর্তটি সত্য দেখায় যাতে সাধারণ টাইপ শর্তে অপরিবর্তিত বিকল্পটি আমাদের দরকার। @ চক
কার্তিকিয়ান।

এটা ভুল. typeofকখনও ফলন হবে না undefined, শুধুমাত্র স্ট্রিং 'undefined'। অধিকন্তু, i == nullইতিমধ্যে সত্য যদি iহয় undefined, তাই দ্বিতীয় বুলিয়ান অপ্রয়োজনীয় হবে এমনকি যদি এটা কাজ করে।
অস্থায়ী_ ব্যবহারকারী_নাম 21

1
এই সমাধানটি (শর্তগুলি বিপরীত করে) ইতিমধ্যে ১১ ই অক্টোবর, ২০১৩ এ @ জিন্দাওয়াল দ্বারা সরবরাহ করা হয়েছিল st প্রকৃতপক্ষে, এটি পৃষ্ঠা ব্লাট যুক্ত করছে এবং এটি পড়ার সময় গবেষকদের নষ্ট করছে। দয়া করে এই উত্তরটি সরান।
মিকম্যাকুসা

0

foo == nullচেক কৌতুক করতে এবং সবচেয়ে কম পদ্ধতিতে "অনির্ধারিত বা নাল" কেস সমাধান করা উচিত নয়। ("Foo ঘোষিত হয় না" কেস বিবেচনা না করে।) তবে যে সমস্ত লোকদের 3 টি সমান (সেরা অনুশীলন হিসাবে) ব্যবহার করা হয় তারা এটি গ্রহণ করতে পারে না। শুধু একেকেক বা ট্রিপল-সমান দিকে তাকানএসলিন্ট এবং স্লিন্টে নিয়মগুলি দেখুন ...

সুস্পষ্ট পদ্ধতির, যখন আমরা যাচ্ছি যে কোনও পরিবর্তনশীল undefinedবা nullপৃথক পৃথক কিনা তা এই ক্ষেত্রে প্রয়োগ করা উচিত এবং এই বিষয়ে আমার অবদান (এখনকার জন্য 27 অ-নেতিবাচক জবাব!) void 0চেক সম্পাদনের জন্য উভয় স্বল্প ও নিরাপদ উপায় হিসাবে ব্যবহার করা জন্যundefined

ব্যবহার foo === undefinedকরা নিরাপদ নয় কারণ অপরিজ্ঞাত কোনও সংরক্ষিত শব্দ নয় এবং ছায়াছবি হতে পারে ( MDN )। typeof === 'undefined'চেক ব্যবহার করা নিরাপদ, তবে আমরা যদি ফু-ইজ-অঘোষিত ক্ষেত্রে যত্ন নিই না তবে নীচের পদ্ধতিটি ব্যবহার করা যেতে পারে:

if (foo === void 0 || foo === null) { ... }

0

যদি আপনি এটি পরীক্ষা করতে কোনও ফাংশন তৈরি করেন:

export function isEmpty (v) {
 if (typeof v === "undefined") {
   return true;
 }
 if (v === null) {
   return true;
 }
 if (typeof v === "object" && Object.keys(v).length === 0) {
   return true;
 }

 if (Array.isArray(v) && v.length === 0) {
   return true;
 }

 if (typeof v === "string" && v.trim().length === 0) {
   return true;
 }

return false;
}

-1

টাইপ অফ নালকে কল করা "অবজেক্ট" এর একটি মান দেয়, কারণ বিশেষ মান নালকে একটি খালি অবজেক্ট রেফারেন্স হিসাবে বিবেচনা করা হয়। সংস্করণ ৫-এর মাধ্যমে সাফারি এবং সংস্করণ through এর মাধ্যমে ক্রোমের বিচক্ষণতা রয়েছে যেখানে নিয়মিত অভিব্যক্তিতে কলিং টাইপ "ফাংশন" দেয় যখন অন্য সমস্ত ব্রাউজারগুলি "অবজেক্ট" ফেরত দেয়।


-1
var x;
if (x === undefined) {
    alert ("only declared, but not defined.")
};
if (typeof y === "undefined") {
    alert ("not even declared.")
};

আপনি কেবল দ্বিতীয়টি ব্যবহার করতে পারেন: এটি সংজ্ঞা এবং ঘোষণার উভয়ই যাচাই করবে


-1

আমি এখনও মনে করি এই দুটি শর্ত পরীক্ষা করার সর্বোত্তম / নিরাপদ উপায় হ'ল মানটিকে স্ট্রিংয়ে ফেলে দেওয়া:

var EmpName = $("div#esd-names div#name").attr('class');

// Undefined check
if (Object.prototype.toString.call(EmpName) === '[object Undefined]'){
    // Do something with your code
}

// Nullcheck
if (Object.prototype.toString.call(EmpName) === '[object Null]'){
    // Do something with your code
}

আপনি কেন ব্যাখ্যা করতে পারেন যে কেন আপনি বিশ্বাস করেন যে পরীক্ষাগুলি সম্পাদনের এটি "সেরা / নিরাপদ উপায়"?
স্যাডমিকোওয়েভ

কারণ রূপান্তরটি সর্বদা একটি "মানক" স্ট্রিং প্রত্যাবর্তন করে (যেমন [অবজেক্ট অপরিবর্তিত]), সুতরাং আপনি মিথ্যা মানগুলি পরীক্ষা করে সমস্যায় পড়বেন না। সত্যবাদী / মিথ্যা মূল্যবোধের সাথে আমার যে অভিজ্ঞতা হয়েছে তার ভিত্তিতে এটিই আমার মতামত।
n1kkou

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

কোন চিন্তা করো না! এই ধরণের তুলনা নিয়ে আমার প্রচুর সমস্যা ছিল এবং এখন অবধি আমি এটিকে এই বিষয়টির জন্য সবচেয়ে দরকারী পদ্ধতির হিসাবে খুঁজে পাই।
n1kkou

-2

টাইপফ ব্যবহার করে মানটি অপরিজ্ঞাত বা নাল কিনা তা আপনি পরীক্ষা করতে পারেন:

if(typeof value == 'undefined'){

টাইফফ সম্পর্কিত পূর্ববর্তী উত্তরে ( stackoverflow.com/a/21273362/6305294 ) মন্তব্য দেখুন ।
অ্যালেক্স

4
এটি ভুল। ধরেনা null। আমি বুঝতে পারি না যে কেন বহু বছর আগে একটি সঠিক এবং সম্পূর্ণ উত্তর দেওয়া হয়েছিল এমন প্রশ্নের কেন নতুন, ভুল উত্তর সরবরাহ করা হচ্ছে। আপনি কি মনে করেন বর্তমান উত্তরগুলি কোনওভাবে অপর্যাপ্ত?
অস্থায়ী_ ব্যবহারকারী_নাম

-4

if(x==null)জাভাস্ক্রিপ্ট একটি খারাপ ধারণা। এর সাথে বিচার করুন "=="- এটি অপ্রত্যাশিত ধরণের জবরদস্তির কারণ হতে পারে এবং এটি কফি স্ক্রিপ্ট দ্বারা পড়া যায় না, শর্ত রায়তে কখনও "==" বা "! =" ব্যবহার করবেন না!

if(x)আরও ভাল হবে তবে 0 এবং "" এর সাথে সতর্ক থাকুন । এটা তোলে বলে গণ্য হবে মিথ্যা সঙ্গে, সমান নয় পদ্ধতি "!= null"হল সত্য

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

দেখুন জাভাস্ক্রিপ্ট সর্বোত্তম কার্যাভ্যাস


3
এটি সম্পূর্ণরূপে ভুল, এবং কোনও পেশাদার-গ্রেড কাঠামো বা সফ্টওয়্যার এর অভিশাপ অধ্যয়ন মুহুর্তের মধ্যেই তা প্রমাণ করে দেবে। ব্যবহার ==সাথে তুলনা করতে nullহয় ধরার আদর্শ উপায় এবং জাতীয় পারে। প্রকারের সাথে জবরদস্তি এই নির্দিষ্ট প্রসঙ্গে ঝুঁকি নয়, এবং বাস্তবে উভয়কে এবং একই সাথে ধরার লক্ষ্য অর্জনের সুযোগ গ্রহণ করা হচ্ছে । বছরের পর বছর সন্তোষজনকভাবে সমাধান করা প্রশ্নগুলির ভুল এবং বিভ্রান্তিমূলক উত্তর দেওয়ার জন্য নির্বাচনের আগে ভাষা নিয়ে আরও বেশি সময় ব্যয় করুন। nullundefined==nullundefined
অস্থায়ী_ ব্যবহারকারী_নাম

"==" এড়ানো। সবসময় সর্বদা পরিবর্তন থাকে, আমি আপনার সাথে @ অ্যারোভিস্টে
অ্যালবার্ট.কুইং

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