javascript - পরিবর্তনশীল বিদ্যমান কিনা জাভাস্ক্রিপ্ট চেক (সংজ্ঞায়িত / প্রাথমিক)



14 Answers

typeof অপারেটরটি যাচাই করবে কিনা পরিবর্তনশীলটি সত্যিই অনির্ধারিত।

if (typeof variable === 'undefined') {
    // variable is undefined
}

অন্য অপারেটারদের বিপরীতে typeof অপারেটর, একটি অব্যবহৃত পরিবর্তনশীলের সাথে ব্যবহার করার সময় একটি রেফারেন্সের ত্রুটি ব্যতিক্রম করে না।

যাইহোক, নোট typeof null "object" ফেরত হবে মনে রাখবেন। আমরা একটি পরিবর্তনশীল null শুরু করার ভুল এড়ানোর জন্য সতর্ক হতে হবে। নিরাপদ হতে, এর পরিবর্তে আমরা এটি ব্যবহার করতে পারি:

if (typeof variable === 'undefined' || variable === null) {
    // variable is undefined or null
}

কঠোর তুলনা === সাধারণ সমতা === পরিবর্তে আরও তথ্যের জন্য, দেখুন:
যা অপারেটর সমান (== বনাম ===) জাভাস্ক্রিপ্ট তুলনা মধ্যে ব্যবহার করা উচিত?

javascript variables if-statement initialization undefined

একটি পরিবর্তনশীল চালু করা হয়েছে কিনা চেক করার কোন পদ্ধতিটি ভাল / সঠিক? (ভেরিয়েবল assuming কিছু রাখা হতে পারে (স্ট্রিং, int, বস্তু, ফাংশন, ইত্যাদি))

if (elem) { // or !elem

অথবা

if (typeof(elem) !== 'undefined') {

অথবা

if (elem != null) {



অনেক ক্ষেত্রে, ব্যবহার করে:

if (elem) { // or !elem

আপনার জন্য কাজ করবেন! ... এটি নিচের এইসব ক্ষেত্রে পরীক্ষা করবে:

  1. অনির্দিষ্ট : মান সংজ্ঞায়িত করা হয় না এবং এটি undefined
  2. নাল : যদি এটি নাল হয়, উদাহরণস্বরূপ, যদি একটি DOM উপাদান বিদ্যমান না হয় ...
  3. খালি স্ট্রিং : ''
  4. 0 : শূন্য সংখ্যা
  5. NaN : একটি সংখ্যা না
  6. মিথ্যা

সুতরাং এটি সমস্ত ক্ষেত্রে বন্ধ করে দেওয়া হবে, তবে সবসময় অদ্ভুত ক্ষেত্রেও আমরা কভার করতে চাই, উদাহরণস্বরূপ, স্পেসগুলির সাথে একটি স্ট্রিং, যেমন ' ' এক ' ' , এটি জাভাস্ক্রিপ্টে সংজ্ঞায়িত করা হবে কারণ এটিতে স্পেস রয়েছে ভিতরে স্ট্রিং ... উদাহরণস্বরূপ, এই ক্ষেত্রে আপনি trim () ব্যবহার করে আরো একটি চেক যুক্ত করুন, যেমন:

if(elem) {

if(typeof elem === 'string' && elem.trim()) {
///

এছাড়াও, এই চেক শুধুমাত্র মানগুলির জন্য, যেমন বস্তু এবং অ্যারে জাভাস্ক্রিপ্টে আলাদাভাবে কাজ করে, খালি অ্যারে [] এবং খালি বস্তু {} সর্বদা সত্য

আমি দ্রুত একটি সংক্ষিপ্ত সংক্ষিপ্তসার দেখানোর জন্য নীচের ছবিটি তৈরি করেছি:




কিভাবে একটি পরিবর্তনশীল বিদ্যমান চেক করুন

এটি একটি প্রশংসনীয় বুলেটপ্রুফ সমাধান যা যাচাইয়ের জন্য পরীক্ষা করে এবং এটি চালু করা হয়েছে:

var setOrNot = typeof variable !== typeof undefined;

একটি নির্দিষ্ট পরিবর্তনশীল সূচনা না করা অবস্থায় ডিফল্ট সেট করার জন্য এটি সাধারণত ত্রিনির অপারেটরের সাথে সংযোজনে ব্যবহৃত হয়:

var dark = typeof darkColor !== typeof undefined ? darkColor : "black";

Encapsulation সঙ্গে সমস্যা

দুর্ভাগ্যবশত, আপনি কেবল একটি ফাংশন আপনার চেক encapsulate করতে পারবেন না।

আপনি এমন কিছু করার কথা ভাবতে পারেন:

function isset(variable) {
    return typeof variable !== typeof undefined;
}

যাইহোক, যদি আপনি ফোন করছেন যেমন এটি একটি রেফারেন্স ত্রুটি উত্পন্ন করবে। isset(foo) এবং পরিবর্তনশীল foo সংজ্ঞায়িত করা হয় নি, কারণ আপনি কোনও অ-বিদ্যমান পরিবর্তনশীলের সাথে একটি ফাংশনে যেতে পারছেন না:

Uncaught রেফারেন্স ত্রুটি: Foo সংজ্ঞায়িত করা হয় না

ফাংশন পরামিতি অনির্দিষ্ট কিনা পরীক্ষা

আমাদের isset ফাংশনটি কোনও পরিবর্তনশীল বিদ্যমান কিনা তা যাচাই করতে ব্যবহার করা যাবে না (কারণগুলি এখানে ব্যাখ্যা করা হয়েছে), এটি একটি ফাংশনের প্যারামিটারগুলি অনির্ধারিত কিনা তা পরীক্ষা করার অনুমতি দেয়:

var a = '5';

var test = function(x, y) {
    console.log(isset(x));
    console.log(isset(y));
};

test(a);

// OUTPUT :
// ------------
// TRUE
// FALSE

ফাংশন test পাশাপাশি y জন্য কোনও মান প্রেরণ করা হয় না, তবে আমাদের isset ফাংশন এই প্রেক্ষাপটে পুরোপুরি কাজ করে, কারণ ফাংশন test undefined মান হিসাবে পরিচিত।




যখন আপনি সহজ নিয়োগ এবং সম্পর্কিত চেক সঞ্চালন করেন, তখন এটি পরীক্ষা করার জন্য আরেকটি ছোট হাতের উপায় রয়েছে। শুধু শর্তাধীন (টার্নারি) অপারেটর ব্যবহার করুন

var values = typeof variable !== 'undefined' ? variable : '';

এছাড়াও এটি সহায়ক হবে, যখন আপনি গ্লোবাল ভেরিয়েবলকে রেফারেন্স ভেরিয়েবলের ইনস্ট্যান্স অ্যাসাইনমেন্ট সহ ঘোষণা করার চেষ্টা করেন।

আপনি পরিবর্তনশীল চেক করতে চেয়েছিলেন undefined বা null করা উচিত নয়। তারপর চেক নিচে সঞ্চালন।

পরিবর্তনশীল ঘোষণা করা হয়, এবং আপনি মান চেক করতে চান, এটি এমনকি সহজ: এবং এটি একসঙ্গে undefined এবং null চেক সঞ্চালন করবে।

var values = variable ? variable : '';



এটি নির্ভর করে যদি আপনি কেবলমাত্র ভেরিয়েবলটি সংজ্ঞায়িত করেছেন কিনা বা যদি আপনি এটি একটি অর্থপূর্ণ মান চান।

টাইপ অনির্ধারিত যদি চেক করা হয় পরিবর্তনশীল এখনো সংজ্ঞায়িত করা হয়েছে কিনা তা পরীক্ষা করবে।

=== null বা !== null কেবলমাত্র যাচাই করবে যে ভেরিয়েবলের মান ঠিক null

== null বা != null মান undefined বা null কিনা চেক করবে।

if(value) যাচাই করবে পরিবর্তনশীল undefined , null , 0 , অথবা একটি খালি স্ট্রিং।




if (typeof console != "undefined") {    
   ...
}

অথবা ভাল

if ((typeof console == "object") && (typeof console.profile == "function")) {    
   console.profile(f.constructor);    
}

সব ব্রাউজারে কাজ করে




অনির্ধারিত এবং নাল মধ্যে পার্থক্য করা কঠিন। নুল একটি মান যা আপনি একটি পরিবর্তনশীল বরাদ্দ করতে পারেন যখন আপনি নির্দেশ করতে চান যে পরিবর্তনশীল কোন বিশেষ মান আছে। অনির্দিষ্ট একটি বিশেষ মান যা unassigned ভেরিয়েবলের ডিফল্ট মান হবে।


var _undefined;
var _null = null;

alert(_undefined); 
alert(_null); 
alert(_undefined == _null);
alert(_undefined === _null);




এই উত্তরগুলি (ফ্রেড গ্যান্ড্ট সমাধান থেকে বাদে) সবগুলি ভুল বা অসম্পূর্ণ।

ধরুন আমার আমার variableName; প্রয়োজন variableName; একটি undefined মান বহন করতে, এবং তাই এটি var variableName; হিসাবে একটি পদ্ধতিতে ঘোষণা করা হয়েছে var variableName; যার অর্থ ইতিমধ্যে এটি চালু করা হয়েছে ; - যদি এটি ইতিমধ্যে ঘোষিত হয় তবে আমি কিভাবে পরীক্ষা করব?

বা এমনকি আরও ভাল - "Book1.chapter22.paragraph37" একটি একক কল দিয়ে বিদ্যমান থাকলে আমি কীভাবে অবিলম্বে চেক করব, কিন্তু একটি রেফারেন্স ত্রুটি উঠবে না?

আমরা সবচেয়ে শক্তিশালী JavasvaScript অপারেটর, ইন অপারেটর ব্যবহার করে এটি করি।

"[variable||property]" in [context||root] 
>> true||false

AJAX পিকিং জনপ্রিয়তার সময়ে আমি একটি পদ্ধতি (পরে নামকরণ করা) isNS () লিখেছি যা নামস্থানটি বিদ্যমান রয়েছে কিনা তা নির্ধারণ করতে সক্ষম, যেমন "Book1.chapter22.paragraph37" এবং আরও অনেক কিছু।

কিন্তু যেহেতু এটি পূর্বে প্রকাশ করা হয়েছে এবং তার গুরুত্বের কারণে এটি একটি পৃথক থ্রেডে প্রকাশিত হওয়ার যোগ্যতা আমি এখানে পোস্ট করব না তবে এটি কীওয়ার্ড সরবরাহ করবে ( জাভাস্ক্রিপ্ট + আইএনএনএস ) যা আপনাকে সোর্স কোড সনাক্ত করতে সহায়তা করবে প্রয়োজনীয় ব্যাখ্যা।




আপনি typeof অপারেটর ব্যবহার করতে পারেন।

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

var dataSet;

alert("Variable dataSet is : " + typeof dataSet);

উপরে কোড স্নিপেট মত আউটপুট ফিরে আসবে

পরিবর্তনশীল তথ্য সেট: অনির্ধারিত।




আমার পছন্দ typeof(elem) != 'undefined' && elem != null

তবে আপনি চয়ন করুন, তাই মত একটি ফাংশন চেক নির্বাণ বিবেচনা

function existy (x) {
    return typeof (x) != 'undefined' && x != null;
}

যদি আপনি পরিবর্তনশীল ঘোষিত না হন তবে typeof (x) != 'undefined' && x != null; দিয়ে অবিরত থাকুন typeof (x) != 'undefined' && x != null;

কোথায় আপনি পরিবর্তনশীল ঘোষিত হয় কিন্তু অস্তিত্ব নাও হতে পারে, আপনি ব্যবহার করতে পারেন

existy(elem) && doSomething(elem);

পরিবর্তনশীল আপনি চেক করা হয় কখনও কখনও একটি নিস্তেজ সম্পত্তি হতে পারে। আপনি prop ব্যবহার করতে পারেন || {} প্রশ্নে সম্পত্তিটির লাইন চেকিং অস্তিত্বটি নিচে যান:

var exists = ((((existy(myObj).prop1||{}).prop2||{}).prop3||{})[1]||{}).prop4;

প্রতিটি সম্পত্তি ব্যবহার করার পরে (... '{{}')। পরবর্তী প্রপোজ করুন যাতে অনুপস্থিত সম্পত্তি কোনও ত্রুটি নিক্ষেপ না করে।

অথবা আপনি অস্তিত্বের মত existy(o) && existy(op) && existy(opq) && doSomething(opq) ব্যবহার করতে পারেন existy(o) && existy(op) && existy(opq) && doSomething(opq)




আমি বস্তুর উপর নির্ভর করে দুটি ভিন্ন উপায়ে ব্যবহার।

if( !variable ){
  // variable is either
  // 1. '';
  // 2. 0;
  // 3. undefined;
  // 4. null;
  // 5. false;
}

কখনও কখনও আমি মিথ্যা হিসাবে একটি খালি স্ট্রিং মূল্যায়ন করতে চান না, তাই আমি এই ক্ষেত্রে ব্যবহার

function invalid( item ){
  return (item === undefined || item === null);
}

if( invalid( variable )){
  // only here if null or undefined;
}

যদি আপনার বিপরীত প্রয়োজন হয়, তবে প্রথম উদাহরণে! পরিবর্তনশীল হয়ে যায় !! ভেরিয়েবল, এবং অবৈধ ফাংশন === হয়ে যায়! = এবং ফাংশন নামগুলি অনাবশ্যকে পরিবর্তিত হয়।




একটু বেশি কার্যকরী এবং ব্যবহার করা সহজ:

function exist(obj)
{
    return (typeof obj !== 'undefined');
}

উপস্থিত থাকলে ফাংশন সত্য ফিরে আসবে, অন্যথায় যদি মিথ্যা না থাকে।




সচেতন থাকবেন যে যখন আপনি চেক করুন! == বা! = "অনির্দিষ্ট" বিরুদ্ধে এটি কাজ করবে না

ফিরফক্স কোয়ান্টাম 60.0.1 পরীক্ষা

বিপর্যস্ত এড়াতে পরিবর্তে এই মত পরীক্ষা ব্যবহার করুন

if(!(typeof varibl['fl'] === 'undefined')) {

            console.log(varibl['fl']);
            console.log("Variable is Defined");
        }else{

            console.log(varibl['fl']);
            console.log("Variable is Un-Defined");
        }



আমি উপরের উত্তরগুলিতে এটি দেখতে পাচ্ছি না, তাই আমি এখানে পরামর্শ দেব, আমি অনুমান করছি।

function isDefined(x) { return !!x }

if( isDefined(x) ) {
    //The variable is defined
}

! x সত্য ফেরত দেবে if x x হয় নাল বা অনির্ধারিত , তাই !! x শুধুমাত্র আসল iff x না অনির্ধারিত বা নাল হবে।

আমি বুঝতে পারছি যে এটি অস্পষ্ট ক্ষেত্রেও রয়েছে, কিন্তু এখানে এটি সম্পর্কে ন্যায্য সতর্কতা রয়েছে।




Related