কোনও বস্তুর সম্পত্তি পুনরাবৃত্তি করার সময় মুছে ফেলা কি নিরাপদ?


102

যখন কোনও অবজেক্টের বৈশিষ্ট্যগুলি নিয়ে পুনরাবৃত্তি করা হয়, তখন কোনও ইন-লুপ থাকা অবস্থায় সেগুলি মুছে ফেলা নিরাপদ?

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

for (var key in obj) {
    if (!obj.hasOwnProperty(key)) continue;

    if (shouldDelete(obj[key])) {
        delete obj[key];
    }
}

অন্যান্য অনেক ভাষায় একটি অ্যারে বা অভিধানের মাধ্যমে পুনরাবৃত্তি হওয়া এবং এর ভিতরে মোছা অনিরাপদ। জেএসে কি ঠিক আছে?

(আমি মজিলার স্পাইডারমনকি রানটাইম ব্যবহার করছি))


আমি এই প্রশ্নের উপর অনুগ্রহ শুরু করেছি কারণ আমার ধারণা বর্তমান উত্তরটি অপর্যাপ্ত এবং উপস্থাপিত প্রশ্নের উত্তর দেয় না । যদি প্রযোজ্য হয় তবে দয়া করে কোনও প্রাসঙ্গিক উত্স (আশা করি স্পেসিফিকেশন থেকে) এবং কোনও উল্লেখযোগ্য ব্রাউজার "quirks" অন্তর্ভুক্ত করুন।
ব্যবহারকারী 2864740

উত্তর:


120

এর নাম ECMAScript 5.1 মান অধ্যায় 12.6.4 (চালু জন্য-ইন লুপ) বলেছেন:

গণনার সময় অবজেক্টের বৈশিষ্ট্যগুলি মুছে ফেলা হতে পারে। যদি এমন কোনও সম্পত্তি যা গণনার সময় পরিদর্শন করা হয়নি তবে তা মুছে ফেলা হয়, তবে তা পরিদর্শন করা হবে না। যদি গণনার সময় গণনা করা অবজেক্টটিতে নতুন বৈশিষ্ট্য যুক্ত হয় তবে সদ্য সংযুক্ত বৈশিষ্ট্যগুলি সক্রিয় গণনায় পরিদর্শন করার গ্যারান্টিযুক্ত নয়। কোনও সম্পত্তি গণনার ক্ষেত্রে অবশ্যই একাধিকবার নাম দেখা উচিত নয় visited

সুতরাং আমি মনে করি এটি স্পষ্ট যে ওপির কোডটি বৈধ এবং প্রত্যাশার মতো কাজ করবে। ব্রাউজার কিরকগুলি পুনরাবৃত্তির ক্রমকে প্রভাবিত করে এবং সাধারণভাবে বিবৃতিগুলি মুছে দেয়, তবে ওপিএস কোডটি কাজ করবে কিনা তা নয়। কেবলমাত্র পুনরাবৃত্তির বর্তমান সম্পত্তি মুছে ফেলা ভাল - অবজেক্টের অন্যান্য বৈশিষ্ট্য মুছে ফেলা অপ্রত্যাশিতভাবে তাদের অন্তর্ভুক্তির কারণ হতে পারে (যদি ইতিমধ্যে পরিদর্শন করা হয়) বা পুনরাবৃত্তির অন্তর্ভুক্ত না হয়, যদিও এটি হয়ত নির্ভর করে বা উদ্বেগের উপর নির্ভর করে না অবস্থা.

আরো দেখুন:

এর কোনওটিই যদিও ওপির কোডকে প্রভাবিত করে না।


4
আমি কেবল লক্ষ্য করেছি যে আমি অন্যান্য উত্তরগুলির মতো একই মানের মানটি অন্তর্ভুক্ত করেছি, ক্ষমা চাই।
টমডাব্লু

17

থেকে জাভাস্ক্রিপ্ট / এর নাম ECMAScript স্পেসিফিকেশন (বিশেষভাবে জন্য-ইন বিবৃতি 12.6.4 দ্য ):

গণনা করার সময় অবজেক্টের বৈশিষ্ট্যগুলি মুছে ফেলা হতে পারে । যদি এমন কোনও সম্পত্তি যা গণনার সময় পরিদর্শন করা হয়নি তবে তা মুছে ফেলা হয়, তবে তা পরিদর্শন করা হবে না। যদি গণনার সময় গণনা করা অবজেক্টটিতে নতুন বৈশিষ্ট্য যুক্ত হয় তবে সদ্য সংযুক্ত বৈশিষ্ট্যগুলি সক্রিয় গণনায় পরিদর্শন করার গ্যারান্টিযুক্ত নয় । কোনও সম্পত্তি গণনার ক্ষেত্রে অবশ্যই একাধিকবার নাম দেখা উচিত নয় visited

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