আমি যদি জাভা স্ক্রিপ্টের বুলিয়ান ভেরিয়েবলটিকে এভাবে ঘোষণা করি:
var IsLoggedIn;
এবং তারপরে এটিকে আরম্ভ করুন true
বা 1
, এটি নিরাপদ? বা 1
ভেরিয়েবলকে একটি সংখ্যা তৈরি করে এটি সূচনা করবে ?
আমি যদি জাভা স্ক্রিপ্টের বুলিয়ান ভেরিয়েবলটিকে এভাবে ঘোষণা করি:
var IsLoggedIn;
এবং তারপরে এটিকে আরম্ভ করুন true
বা 1
, এটি নিরাপদ? বা 1
ভেরিয়েবলকে একটি সংখ্যা তৈরি করে এটি সূচনা করবে ?
উত্তর:
প্রকারগুলি আপনার প্রারম্ভিককরণের উপর নির্ভরশীল:
var IsLoggedIn1 = "true"; //string
var IsLoggedIn2 = 1; //integer
var IsLoggedIn3 = true; //bool
তবে এই উদাহরণটি একবার দেখুন:
var IsLoggedIn1 = "true"; //string
IsLoggedIn1 = true; //now your variable is a boolean
আপনার ভেরিয়েবলের ধরণ জাভাস্ক্রিপ্টে নির্ধারিত মানের উপর নির্ভর করে।
না এটি নিরাপদ নয়। আপনি পরে var করতে পারেন IsLoggedIn = "Foo";
এবং জাভাস্ক্রিপ্ট কোনও ত্রুটি নিক্ষেপ করবে না।
এটা করা সম্ভব
var IsLoggedIn = new Boolean(false);
var IsLoggedIn = new Boolean(true);
আপনি নন বুলিয়ান পরিবর্তনশীলটিকেও এর মধ্যে পাস করতে পারবেন new Boolean()
এবং এটি ইসলোগডইন বুলিয়ান তৈরি করবে।
var IsLoggedIn = new Boolean(0); // false
var IsLoggedIn = new Boolean(NaN); // false
var IsLoggedIn = new Boolean("Foo"); // true
var IsLoggedIn = new Boolean(1); // true
if (new Boolean(false)) alert ('wat')
দেখুন stackoverflow.com/a/8695363
(new Boolean(false)).toString()) === "false"
, ধন্যবাদ লিঙ্কের জন্য
যেমন এটি খুব দরকারী টিউটোরিয়াল বলে:
var age = 0;
// bad
var hasAge = new Boolean(age);
// good
var hasAge = Boolean(age);
// good
var hasAge = !!age;
আপনি যদি IsLoggedIn
বুলিয়ান হিসাবে চিকিত্সা করতে চান তবে আপনার নীচের মত শুরু করা উচিত:
var IsLoggedIn=true;
আপনি যদি এটি দিয়ে আরম্ভ করেন var IsLoggedIn=1;
তবে এটি একটি পূর্ণসংখ্যা হিসাবে বিবেচিত হবে।
তবে যে কোনও সময়ে ভেরিয়েবলটি IsLoggedIn
একটি ভিন্ন ডেটা ধরণের উল্লেখ করতে পারে:
IsLoggedIn="Hello World";
এটি কোনও ত্রুটির কারণ হবে না।
আপনি অন্তত তাদের 'সংজ্ঞা' এর জন্য অবিচ্ছিন্ন ভেরিয়েবলগুলি ব্যবহার করতে এবং পরীক্ষা করতে পারেন। এটার মত:
var iAmNotDefined;
alert(!iAmNotDefined); //true
//or
alert(!!iAmNotDefined); //false
তদুপরি, অনেকগুলি সম্ভাব্য লোক রয়েছে: আপনি যদি সঠিক ধরণের বিষয়ে আগ্রহী না হন তবে তুলনার জন্য '==' অপারেটর (বা! [পরিবর্তনশীল] / !! [পরিবর্তনশীল]) ব্যবহার করুন (এটি ডগলাস ক্রকফোর্ড 'সত্যবাদী' বা ' মিথ্যা 'আমি মনে করি)। সেক্ষেত্রে এককীকরণযুক্ত ভেরিয়েবলকে সত্য বা 1 বা '1' বরাদ্দ করা জিজ্ঞাসা করা হলে সর্বদা সত্য ফিরে আসে returns অন্যথায় [আপনার যদি সুরক্ষার তুলনা প্রকারের প্রয়োজন হয়] তুলনার জন্য '===' ব্যবহার করুন।
var thisMayBeTrue;
thisMayBeTrue = 1;
alert(thisMayBeTrue == true); //=> true
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> false
thisMayBeTrue = '1';
alert(thisMayBeTrue == true); //=> true
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> false
// so, in this case, using == or !! '1' is implicitly
// converted to 1 and 1 is implicitly converted to true)
thisMayBeTrue = true;
alert(thisMayBeTrue == true); //=> true
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> true
thisMayBeTrue = 'true';
alert(thisMayBeTrue == true); //=> false
alert(!!thisMayBeTrue); //=> true
alert(thisMayBeTrue === true); //=> false
// so, here's no implicit conversion of the string 'true'
// it's also a demonstration of the fact that the
// ! or !! operator tests the 'definedness' of a variable.
পিএস: যদিও আপনি নক্সিস্টিং ভেরিয়েবলের জন্য 'সংজ্ঞা' পরীক্ষা করতে পারবেন না। সুতরাং:
alert(!!HelloWorld);
একটি রেফারেন্স ত্রুটি দেয় ('হ্যালো ওয়ার্ল্ড সংজ্ঞায়িত করা হয়নি')
('সংজ্ঞায়িত' জন্য আরও ভাল শব্দ আছে? যাইহোক আমার ডাচ ক্ষমা করুন; ~)
thisMayBeTrue = '';
কেসগুলিকে খালি স্ট্রিং দিয়ে আবার চেষ্টা করতে পছন্দ করতে পারেন - খালি স্ট্রিং মিথ্যা হওয়ায় আপনি একই ফলাফল পাবেন না। | "PS: আপনি যা করতে পারেন না পরীক্ষা যদিও ভেরিয়েবল nonexisting জন্য 'definedness'" - আপনি যা করতে পারেন: typeof HellowWorld === 'undefined'
।
জাভাস্ক্রিপ্টের ভেরিয়েবলগুলির কোনও প্রকার নেই। অ-শূন্য, নন-নাল, খালি নয় এবং true
এটি "সত্য"। শূন্য, নাল, অপরিজ্ঞাত, খালি স্ট্রিং এবং false
"মিথ্যা"।
এখানে একটি বুলিয়ান প্রকার রয়েছে, যেমনটি আক্ষরিক true
এবং false
।
2 + 2
বনাম "2" + 2
। আরও দেখুন typeof
অপারেটর ।
কিভাবে ভালো কিছু সম্পর্কে:
var MyNamespace = {
convertToBoolean: function (value) {
//VALIDATE INPUT
if (typeof value === 'undefined' || value === null) return false;
//DETERMINE BOOLEAN VALUE FROM STRING
if (typeof value === 'string') {
switch (value.toLowerCase()) {
case 'true':
case 'yes':
case '1':
return true;
case 'false':
case 'no':
case '0':
return false;
}
}
//RETURN DEFAULT HANDLER
return Boolean(value);
}
};
তারপরে আপনি এটি ব্যবহার করতে পারেন:
MyNamespace.convertToBoolean('true') //true
MyNamespace.convertToBoolean('no') //false
MyNamespace.convertToBoolean('1') //true
MyNamespace.convertToBoolean(0) //false
পারফরম্যান্সের জন্য আমি এটি পরীক্ষা করে দেখিনি, তবে ধরণের থেকে অন্য ধরণের রূপান্তরিত হওয়া খুব ঘন ঘন ঘটে না অন্যথায় আপনি আপনার অ্যাপটি অস্থিরতার জন্য খোলেন!
ভেরিয়েবল আপনি যা টাইপ করেন তা হয়ে যাবে। প্রাথমিকভাবে এটি হয় undefined
। আপনি যদি এটি নির্ধারণ করেন তবে 'true'
এটি একটি স্ট্রিং হয়ে যাবে, আপনি যদি এটি নির্ধারণ করেন তবে true
এটি একটি বুলিয়ান হয়ে যাবে, আপনি যদি এটি নির্ধারণ করেন তবে 1
এটি একটি সংখ্যা হয়ে যাবে। পরবর্তী কাজগুলি ভেরিয়েবলের ধরণ পরে পরিবর্তন করতে পারে।