একটি জাভাস্ক্রিপ্ট সুইচ বিবৃতিতে কঠোর তুলনা অনুমান করা কি নিরাপদ?


105

আমার একটি ভেরিয়েবল রয়েছে যা হয় বুলিয়ান falseবা একটি পূর্ণসংখ্যা (0 সহ) হয়। আমি এটি একটি সুইচ বিবৃতিতে রাখতে চাই:

switch(my_var){
    case 0:
         // Do something
         break;
    case 1:
         // Do something else
         break;
    case false:
         // Some other code
}

গুগল ক্রোমে আমার পরীক্ষাগুলিতে, এটি পুরোপুরি কাজ করছে বলে মনে হচ্ছে তবে আমি এটি ব্যবহার করতে কিছুটা ঘাবড়ে যাচ্ছি কারণ আমি আশঙ্কা করছি যে কোনও ব্রাউজারে, যদি my_varহয় false, তবে এটি প্রথম মামলাটি কার্যকর করতে পারে 0 == false

আমি কেবল ভাবছি যে জাভাস্ক্রিপ্টে অফিসিয়াল কিছু আছে যা বলে যে সুইচ স্টেটমেন্টটি এর সাথে কঠোর তুলনা ব্যবহার করবে 0 !== false, তবে আমি নিজের কিছু খুঁজে পাচ্ছি না এবং আমি নিশ্চিত নই যে এটি বিভিন্ন জাভাস্ক্রিপ্ট ইঞ্জিনে ভালভাবে কাজ করবে কিনা। স্যুইচ বিবৃতি দ্বারা করা তুলনাটি কঠোর হওয়ার নিশ্চয়তা দিলে কেউ কি জানেন?

উত্তর:


103

কটাক্ষপাত ECMA 262, বিভাগ 12.11 , দ্বিতীয় অ্যালগরিদম 4.c.

গ। যদি ইনপুট === অপারেটর দ্বারা নির্ধারিত হিসাবে ক্লজসিলিটরের সমান হয়, তবে ...


11
এটি ১৯৯৯ সাল থেকে এ জাতীয় পার্টি করে চলেছে (পৃষ্ঠা 68, গুলি। 12.11, কেসব্লক # 3)
ওয়ালফ

তারপর কি? আপনি এখানে উদ্ধৃতিটি কেন কেটেছিলেন তা আমি নিশ্চিত নই।
ওলেগ ভি। ভলকভ

34

http://qfox.nl/notes/110 আপনার প্রশ্নের উত্তর দেয়। (এই লোকটি জাভাস্ক্রিপ্টের কট্টর কৌতুক সম্পর্কে অনেক কিছু জানে)

জাভাস্ক্রিপ্টে স্যুইচগুলি কঠোর প্রকারের পরীক্ষা (===) ব্যবহার করে। সুতরাং আপনাকে কখনই জবরদস্তি নিয়ে চিন্তা করতে হবে না, যা কয়েকটি ডাব্লুএইচএফজে :) রোধ করে। অন্যদিকে আপনি জবরদস্তিতে গণনা করছেন, শক্ত ভাগ্য কারণ আপনি এটি জোর করতে পারবেন না।


jsfiddle.net/to469fLm/4 , আপনার প্রয়োজনীয়তা অর্জনের জন্য আপনি চাপদানের কাজটি সাধারণীকরণ করতে পারেন
দার্থেস

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