নকল, অপরিজ্ঞাত বা খালি স্ট্রিং বনাম মিথ্যা মানগুলি


11

আমি কয়েক বছর ধরে jQuery এর সাথে কাজ করেছি। তবে, সম্প্রতি আমি নিজেকে জাভাস্ক্রিপ্ট ভাষাতে আরও গভীর হতে দেখেছি। সম্প্রতি, আমি "সত্যবাদী" এবং ভুয়া মূল্যবোধ সম্পর্কে শুনেছি। তবে আমি সেগুলি পুরোপুরি বুঝতে পারি না। বর্তমানে, আমার কাছে এমন কিছু কোড রয়েছে যা দেখতে এরকম দেখাচ্ছে:

var fields = options.fields || ['id', 'query'];

ক্ষেত্রগুলি নাল, অপরিজ্ঞাত বা 0 এর দৈর্ঘ্য আছে কিনা তা সনাক্ত করতে হবে I আমি জানি দীর্ঘ পথটি করণীয়:

if ((fields === null) || (fields === undefined) || (fields.length === 0)) {
 ...                    
}

আমার প্রশ্নটি হল, নিম্নলিখিতগুলি কি একই:

if (!fields)  {
 ...
}

উত্তর:


23

প্রোগ্রামিংয়ে, সত্যতা বা মিথ্যাচার সেই সেই বুলিয়ান এক্সপ্রেশনগুলির গুণ যা প্রকৃত বুলিয়ান মানের সাথে সমাধান করে না, তবে যা তবুও বুলিয়ান ফলাফল হিসাবে ব্যাখ্যা করা হয়।

সি এর ক্ষেত্রে, কোনও অভিব্যক্তি যা শূন্যকে মূল্যায়ন করে তা মিথ্যা বলে ব্যাখ্যা করা হয়। জাভাস্ক্রিপ্ট মত প্রকাশের valueমধ্যে

if(value) {
}

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

null
undefined
NaN
empty string ("")
0
false

এছাড়াও দেখুন
জাভাস্ক্রিপ্টে নাল, অপরিজ্ঞাত বা ফাঁকা ভেরিয়েবলগুলি পরীক্ষা করার জন্য কি কোনও স্ট্যান্ডার্ড ফাংশন রয়েছে?


9

জাভাস্ক্রিপ্টে "সত্যবাদী" এবং "ভুয়া" মানগুলির সেটটি ToBooleanECMAScript স্পেসে সংজ্ঞায়িত বিমূর্ত অপারেশন থেকে আসে , যা বুলিয়ানকে একটি মান চাপানোর সময় ব্যবহৃত হয়:

+--------------------------------------------------------------------------+
| Argument Type | Result                                                   |
|---------------+----------------------------------------------------------|
| Undefined     | false                                                    |
|---------------+----------------------------------------------------------|
| Null          | false                                                    |
|---------------+----------------------------------------------------------|
| Boolean       | The result equals the input argument (no conversion).    |
|---------------+----------------------------------------------------------|
| Number        | The result is false if the argument is +0, 0, or NaN;   |
|               | otherwise the result is true.                            |
|---------------+----------------------------------------------------------|
| String        | The result is false if the argument is the empty String  |
|               | (its length is zero); otherwise the result is true.      |
|---------------+----------------------------------------------------------|
| Object        | true                                                     |
+--------------------------------------------------------------------------+

এই টেবিল থেকে, আমরা এটি দেখতে পারি nullএবং undefinedউভয়ই falseবুলিয়ান প্রসঙ্গে জোর করে। যাইহোক, আপনার fields.length === 0সাধারণত কোনও ভুয়া মান হিসাবে মানচিত্র হয় না। যদি fields.lengthএকটি স্ট্রিং হয়, তবে এটির হিসাবে গণ্য হবে false(কারণ শূন্য দৈর্ঘ্যের স্ট্রিংটি false) তবে এটি যদি কোনও বস্তু হয় (অ্যারে সহ) এটি বাধ্য করে true

যদি fieldsএকটি স্ট্রিং হওয়া উচিত, তবে !fieldsএকটি পর্যাপ্ত অনুমান। যদি fieldsঅ্যারে হয় তবে আপনার সেরা চেকটি হতে পারে:

if (!fields || fields.length === 0)

2

সংক্ষিপ্ত উত্তর:

না , তারা এক নয়।

কিন্তু এই:

if (!fields) { ... }

এই হিসাবে একই:

if ((fields === null) || (fields === undefined) || (fields === 0) || (fields === '') || (fields === NaN) || (fields === flase)) { ...
}

দীর্ঘ (এবং আরও ভাল) উত্তর:

আসুন প্রথমে সত্যবাদী এবং মিথ্যা মান সম্পর্কে কথা বলি।

আপনি যখন বুলিয়ান হিসাবে কোনও কিছু মূল্যায়ন করেন তখন কী হয় তা এই সমস্ত বিষয়। জাভাস্ক্রিপ্টে, আপনি যখন ifস্টেটমেন্টের মতো জিনিস ব্যবহার করেন এটি ঘটে ; লজিক্যাল অপারেটর পছন্দ ||, !অথবা &&; বা Boolean()ফাংশন।

Boolean()ফাংশন একটি মান এবং আয় হয় গ্রহণ trueবা false

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

var age = 1; // Let's evaluate age as a boolean Boolean(age); // true

এগিয়ে যান এবং একটি নোড repl এ চেষ্টা করুন।

একটি বুলিয়ান শুধুমাত্র হতে পারে trueবা falseতাই, এর ফিরতি মান Boolean() অবশ্যই হয় trueবা হয় false। এই ক্ষেত্রে, আমরা মানটি পাস করেছি 1, এবং যখন বুলিয়ান হিসাবে মূল্যায়ন করা হয় তখন 1হয় true

গুরুত্বপূর্ণ: যখন বুলিয়ান হিসাবে মূল্যায়ন করা হয়, তখন মানটি সত্য বা মিথ্যা হতে হবে। সেগুলি কেবল দুটি বিকল্প।

জাভাস্ক্রিপ্টে, কেবল 6 টি মিথ্যা মান রয়েছে। falseবুলিয়ান হিসাবে যখন মূল্যায়ন করা হবে তখন মানগুলি । এইগুলি হল: false, 0, "", null, undefined, এবং NaN। সুতরাং এই মানগুলির যদি কোনও বুলিয়ান হিসাবে মূল্যায়ন করা হয় তবে সেগুলি মিথ্যা হবে:

Boolean(false) // false Boolean(0) // false Boolean("") // false Boolean(null) // false Boolean(undefined) // false Boolean(NaN) // false

এর অর্থ হ'ল জাভাস্ক্রিপ্টে অন্য কোনও মান trueবুলিয়ান হিসাবে মূল্যায়ন করা হবে । সুতরাং জাভাস্ক্রিপ্টে প্রতিটি অন্যান্য মান সত্যবাদী।

অপারেটরটি booleanব্যবহার করে কিছু হিসাবে মূল্যায়ন করার আরেকটি সহজ উপায় !। ঠিক যেমন Booleanফাংশন, এটি একটি বুলিয়ান হিসাবে একটি মূল্যায়ন। সত্যবাদী মানগুলি হয়ে যায় falseএবং মিথ্যা মানগুলি হয়ে যায় true

!false // true !0 // true !"" / true !null // true !undefined // true !NaN // true

আবার, নোড রেপেল অথবা আপনি বুঝতে পেরেছেন তা নিশ্চিত করার জন্য এটি ব্যবহার করে দেখুন।

সুতরাং এই বিবৃতি:

if (!fields) { ... }

নিম্নলিখিতটি বলছেন: "যদি fields, বুলিয়ান হিসাবে মূল্যায়ন করা হয় তবে এটি মিথ্যা হয়, তবে বিবৃতিটির মধ্যে কোডটি চালান" "

আপনার প্রথম বিবৃতি হিসাবে:

var fields = options.fields || ['id', 'query'];

আপনি লজিকাল ওআর অপারেটরের সাথে কাজ করছেন, যা আপনি বুঝতে পেরেছেন তা নিশ্চিত করার জন্য এটি পড়া মূল্যবান। https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators


0

আপনার কোডের অর্থ:

var fields;
if (options.fields)
    fields = options.fields;
else
    fields = ['id', 'query'];

এখন options.fieldsএকটি বুলিয়ান মান রূপান্তরিত হয়। সংজ্ঞা অনুযায়ী null, undefined, 0, ""রূপান্তরিত হয় false, (বেশিরভাগই) অন্য কিছু রূপান্তরিত হয় true(কিন্তু আমি তাই ভালো হবে না চান)।

এটি একই অর্থ হয় না, কারণ fields.length === 0লাইন। খালি অ্যারে এবং অন্যান্য বস্তুগুলিতে রূপান্তরিত হয় true

দ্রষ্টব্য: জাভাস্ক্রিপ্ট কখনও কখনও একটি বড় জগাখিচুড়ি ... উদাহরণস্বরূপ 2 ধরণের চেকিং অপারেটরদের (টাইপফ এবং উদাহরণস্বরূপ) এর আসল প্রয়োজন নেই। এটি কেবলমাত্র পিপিএলকে বিভ্রান্ত true instanceof Booleanকরে যখন কাজ করে না এবং typeof(true) == "boolean"অটোমোপ্লেশন ছাড়াই স্ট্রিং টাইপ করার কারণে ত্রুটি প্রবণ হয় using কিছু নতুন সংস্করণে এই সমস্যাগুলি সমাধান করা হবে।


-1

আপনি চেষ্টা করতে পারেন (!! ক্ষেত্র) যদি ক্ষেত্রের উপাদানগুলি নাল, অপরিজ্ঞাত হয় বা 0 এর দৈর্ঘ্য থাকে এটি সত্য হয়। অথবা (!!! ক্ষেত্র) তাহলে এটি সত্য হবে।

দ্বিগুন ! বা !! সত্য বা মিথ্যা জোর করা হবে। আমি আশা করি এটির জন্য আমি একটি ভাল সংজ্ঞা পেতে পারি তবে আমি এটি আবার খুঁজে পাব বলে মনে হয় না।


1
"!!!" হিসাবে একই "!" সংজ্ঞা অনুসারে, যেমন "!!!!!" এবং "!!!!!!!". "নোটিং" কোনও মান সত্যবাদী বা মিথ্যা যা তা নিশ্চিত করার জন্য ব্যবহার করা যেতে পারে যা এর অবশ্যই স্থান আছে তবে এটি ওপির প্রশ্নের পুরোপুরি উত্তর দেয় না। অর্থাৎ সত্যবাদী বা মিথ্যা মানগুলি কী?
জেফরি সুইনি

আমি একটি নিবন্ধ পেয়েছি যা অপারেটর নয় এমনটি আরও ভালভাবে বর্ণনা করে: bennadel.com/blog/… বিকাশকারী.মোজিলা.অর্গ / en-US / docs / Web / JavaScript / References/… এটি আপনার শর্তটিকে বুলিয়ান মান হিসাবে রূপান্তরিত করবে।
র্যান্ডি কলিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.