==
এত অপ্রত্যাশিত কেন ?
আপনি ""
শূন্য সংখ্যার সাথে একটি খালি স্ট্রিং তুলনা করলে আপনি কী পাবেন 0
?
true
হ্যাঁ, এটি ==
একটি খালি স্ট্রিং অনুসারে ঠিক এবং একই সাথে শূন্য সংখ্যাটি।
এবং এটি এখানেই শেষ হয় না, এখানে আরও একটি রয়েছে:
'0' == false // true
অ্যারেগুলির সাথে জিনিসগুলি সত্যই অদ্ভুত হয়ে যায়।
[1] == true // true
[] == false // true
[[]] == false // true
[0] == false // true
তারপরে স্ট্রিংয়ের সাথে উইডার
[1,2,3] == '1,2,3' // true - REALLY?!
'\r\n\t' == 0 // true - Come on!
এটা খুব খারাপ হচ্ছে:
সমান কখন হয় না সমান?
let A = '' // empty string
let B = 0 // zero
let C = '0' // zero string
A == B // true - ok...
B == C // true - so far so good...
A == C // **FALSE** - Plot twist!
এটা আমাকে আবার বলতে দাও:
(A == B) && (B == C) // true
(A == C) // **FALSE**
এবং এটি আদিমদের সাথে পেয়ে যাওয়া কেবল ক্রেজি জিনিস।
আপনি যখন ==
বস্তুগুলি ব্যবহার করেন তখন এটি সম্পূর্ণ নতুন স্তরের পাগল ।
এই মুহুর্তে আপনার সম্ভবত ভাবছি ...
কেন এমন হয়?
এটি কারণ "ট্রিপল সমান" ( ===
) এর বিপরীতে যা দুটি মান একই হয় কিনা তা যাচাই করে।
==
একটি করে অন্যান্য পণ্যদ্রব্য আভা ।
এটিতে ফাংশনগুলির জন্য বিশেষ হ্যান্ডলিং, নালস, অপরিজ্ঞাত, স্ট্রিংগুলির জন্য বিশেষ হ্যান্ডলিং রয়েছে, আপনি এটির নাম দিন।
এটা খুব অসম্ভব।
প্রকৃতপক্ষে, আপনি যদি এমন কোনও ফাংশন লেখার চেষ্টা করেন যা এটি করে যা ==
এটির মতো দেখায়:
function isEqual(x, y) { // if `==` were a function
if(typeof y === typeof x) return y === x;
// treat null and undefined the same
var xIsNothing = (y === undefined) || (y === null);
var yIsNothing = (x === undefined) || (x === null);
if(xIsNothing || yIsNothing) return (xIsNothing && yIsNothing);
if(typeof y === "function" || typeof x === "function") {
// if either value is a string
// convert the function into a string and compare
if(typeof x === "string") {
return x === y.toString();
} else if(typeof y === "string") {
return x.toString() === y;
}
return false;
}
if(typeof x === "object") x = toPrimitive(x);
if(typeof y === "object") y = toPrimitive(y);
if(typeof y === typeof x) return y === x;
// convert x and y into numbers if they are not already use the "+" trick
if(typeof x !== "number") x = +x;
if(typeof y !== "number") y = +y;
// actually the real `==` is even more complicated than this, especially in ES6
return x === y;
}
function toPrimitive(obj) {
var value = obj.valueOf();
if(obj !== value) return value;
return obj.toString();
}
তাহলে এর অর্থ কি?
এর অর্থ ==
জটিল।
কারণ এটি জটিল কারণ আপনি যখন এটি ব্যবহার করবেন তখন কী ঘটবে তা জানা শক্ত।
যার অর্থ আপনি বাগ সহ শেষ করতে পারেন।
গল্পটির নৈতিকতা হ'ল ...
আপনার জীবন কম জটিল করুন।
===
পরিবর্তে ব্যবহার করুন ==
।
শেষ।
=== vs ==
, কিন্তু পিএইচপি, এখানে পড়তে পারেন: stackoverflow.com/questions/2401478/why-is-faster-than-in-php/...