জাভাস্ক্রিপ্ট! উদাহরণস্বরূপ বিবৃতি যদি


186

এটি কেবল আমার কৌতুহল মেটাতে সত্যিই একটি প্রাথমিক প্রশ্ন, তবে এর মতো কিছু করার কোনও উপায় আছে:

if(obj !instanceof Array) {
    //The object is not an instance of Array
} else {
    //The object is an instance of Array
}

কীটি এখানে ব্যবহার করতে সক্ষম হচ্ছে! উদাহরণস্বরূপ। সাধারণত আমাকে যেভাবে সেট আপ করতে হবে তা হ'ল:

if(obj instanceof Array) {
    //Do nothing here
} else {
    //The object is not an instance of Array
    //Perform actions!
}

এবং এটি একটু বিরক্তিকর যখন অন্য কোনও বিবৃতি তৈরি করতে হবে যখন আমি কেবল জানতে চাইতাম যে কোনও একটি নির্দিষ্ট প্রকারের।

উত্তর:


355

বন্ধনী বন্ধ করুন এবং বাইরের দিকে অবজ্ঞা করুন।

if(!(obj instanceof Array)) {
    //...
}

এই ক্ষেত্রে, অগ্রাধিকারের ক্রমটি গুরুত্বপূর্ণ ( https://developer.mozilla.org/en-US/docs/ জাভাস্ক্রিপ্ট / রেফারেন্স / অপারেটর / অপারেটরপ্রসেসেন্স )। দ্য ! অপারেটর আগে অপারেটর আগে।


9
@ হৃষীকেশপ ১৯ - আমি নিশ্চিত যে আপনার পেরেনগুলি দরকার, আমি কেবল চেষ্টা করেছিলাম যে ক্রোম, আইই এবং নোড এবং প্রতিটি হোস্টের তাদের প্রয়োজন।
মার্কাস পোপ

1
@ ishষিপি 89 পেরেনগুলি প্রয়োজনীয়, প্রমাণ: সত্য (সঠিক) !! obj instanceof Arrayফেরত দেওয়ার সময় মিথ্যা (ভুল) !!(obj instanceof Array)
ফেরান

10
কারণটির কারণটি হ'ল প্রথমে যদি (! Instanceজেক্ট উদাহরণসরে অ্যারে) এর মধ্যে اعتراضটি মূল্যায়ন করা হয় যা সত্য (বা মিথ্যা) -এর মূল্যায়ন করে, যা হয়ে যায় যদি (বুল উদাহরণস্বরূপ অ্যারে), যা স্পষ্টতই মিথ্যা। সুতরাং, পরামর্শ হিসাবে এটি প্রথম বন্ধনী মধ্যে মোড়ানো।
রনবট

1
এই কারণটি সত্যই উত্তরের অংশ হওয়া উচিত, অন্যথায় এই উত্তরটি নীচের ক্রিসের চেয়ে ভাল আর কিছু নয়। @ সার্জিওটুলেন্টেভ, আপনি কি দয়াবান হবেন এবং এরকম কিছু যুক্ত করবেন: In this case, the order of precedence is important (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence). The ! operator precedes the instanceof operator. আপনার উত্তরে?
user0800

73
if (!(obj instanceof Array)) {
    // do something
}

এটি যাচাই করার সঠিক উপায় - যেমন অন্যরা ইতিমধ্যে উত্তর দিয়েছে। অন্য দুটি কৌশল যা পরামর্শ দেওয়া হয়েছে তা কার্যকর হবে না এবং বোঝা উচিত ...

!বন্ধনী ছাড়াই অপারেটরের ক্ষেত্রে ।

if (!obj instanceof Array) {
    // do something
}

এই ক্ষেত্রে, অগ্রাধিকারের ক্রমটি গুরুত্বপূর্ণ ( https://developer.mozilla.org/en-US/docs/ জাভাস্ক্রিপ্ট / রেফারেন্স / অপারেটর / অপারেটরপ্রসেসেন্স )। !অপারেটর পূর্বে instanceofঅপারেটর। সুতরাং, প্রথমে !objমূল্যায়ন false(এটি সমান ! Boolean(obj)); তারপরে আপনি পরীক্ষা করছেন যে false instanceof Arrayযা স্পষ্টতই নেতিবাচক।

ক্ষেত্রে !আগে অপারেটর instanceofঅপারেটর।

if (obj !instanceof Array) {
    // do something
}

এটি একটি সিনট্যাক্স ত্রুটি। অপারেটর যেমন !=একটি একক অপারেটর, কোনও EQUALS- এ প্রয়োগ না হওয়ার বিপরীতে। অপারেটর !instanceofযেমন নেই তেমন কোনও !<অপারেটর নেই।


বিশেষ দ্রষ্টব্য। আমি সার্জিওর জবাব নিয়ে এটি একটি মন্তব্য করতাম কারণ এটি স্পষ্টতই সঠিক তবে আমি এসও এর সদস্য ছিলাম না তাই মন্তব্য করার মতো যথেষ্ট খ্যাতি পয়েন্ট ছিল না।
ক্রিসিমহেলসকোট

5
কেবলমাত্র সেইসব উত্তরগুলি ব্যাখ্যা কেন একটি সমস্যা হয়েছে (এই এক মত) গ্রহণ করা উচিত পেতে ...
রবার্ট Rossmann

@ ক্রিসিমহেলসকোট আমার মতে, এবং আমি নিশ্চিত যে আমি একা নই, আপনার মতো উত্তর হ'ল এখানে যে কেউ একটি প্রশ্ন জিজ্ঞাসা করে সবচেয়ে বেশি পছন্দ করেছে। এটি স্পষ্টতই, এবং উপস্থাপিত ইস্যুটি ঘুরে দেখার জন্য পর্যাপ্ত তথ্য এবং উদাহরণ শেয়ার করে। অনেক ধন্যবাদ. এবং আমি মনে করি আপনি খ্যাতির প্রাপ্য এবং এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
cram2208

42

প্রথম বন্ধনী (বন্ধনী) ভুলে যাওয়া সহজ তাই আপনি অভ্যাসটি করতে পারেন:

if(obj instanceof Array === false) {
    //The object is not an instance of Array
}

অথবা

if(false === obj instanceof Array) {
    //The object is not an instance of Array
}

এখানে চেষ্টা করুন


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