आप चेतावनी
@RGraham टिप्पणी में उल्लेख किया है, js संकलक संभालने जाता है कि $.grep()
को दूसरा पैरामीटर कॉलबैक फ़ंक्शन है क्यों हो रही है और अतुल्यकालिक रूप से क्रियान्वित किया जा रहा है (यह कम से कम क्या यह की तरह लग रही है वाक्य रचनात्मक रूप से)। हालांकि यह सच नहीं है क्योंकि दूसरा फ़ंक्शन वास्तव में फ़िल्टर फ़ंक्शन है। API docs
एक आम तौर पर पाश के लिए एक के अंदर एक async
फंक्शन का उपयोग करके चेतावनी Mutable Variable is accessible from closure
जब प्राप्त करें। Thats क्योंकि पूरे for loop
एक गुंजाइश है। इसका अर्थ प्रत्येक पुनरावृत्ति पर है, आप एक ही चर को कैप्चर करना समाप्त कर देंगे। तो कॉलबैक गलत आईडी प्राप्त करेगा, क्योंकि कॉलबैक कहने से पहले level
(म्यूटेबल होने) को बदला जाएगा। सौभाग्य से, मामला आप के साथ :) (क्योंकि $ .grep async नहीं है) काम कर रहे हैं नहीं thats
... तुम अगर यह वास्तव में जिस तरह से मेरी कोड निष्पादित करेंगे प्रभावित करेगा मुझे समझा सकता है?
नहीं, ऐसी चेतावनी आपके कोड के नतीजे को प्रभावित नहीं करेगी।
आप केवल चेतावनी को अनदेखा कर सकते हैं लेकिन यदि आप अभी भी इससे बचना चाहते हैं, तो आप सामग्री को बंद करने के अंदर रख सकते हैं।
for (x = 0; x < levels.length; x++) {
(function(){
var level = levels[x];
var candlesOnLevel = $.grep(relevantCandles, function(candles, index) {
return parseInt($(candles).css("top").replace(/px/, "")) === level;
});
})();
}
आपको क्या चेतावनी मिल रही है? – Tushar
आपका कोड ठीक है। संकलक यह मान रहा है कि '$ .grep' में गुजरने वाली कॉलबैक असीम है लेकिन यह नहीं है। – CodingIntrigue
चेतावनी सिर्फ "उत्परिवर्तनीय परिवर्तनीय बंद होने से सुलभ है", हालांकि उत्तर के लिए ty! –