एक अंतर है, काफी महत्वपूर्ण है।
Array
निर्माता या तो, एक ही नंबर को स्वीकार करता है सरणी के लंबाई दे रही है, और "खाली" सूचकांक के साथ एक सरणी बनाया जाता है, या अधिक सही ढंग से लंबाई सेट कर दिया जाता है, लेकिन वास्तव में सरणी शामिल नहीं है कुछ भी
Array(3); // creates [], with a length of 3
जब केवल तर्क के रूप में एक संख्या के साथ सरणी निर्माता बुला, आप एक सरणी है कि खाली है बनाते हैं, और है कि हमेशा की तरह सरणी के तरीकों के साथ दोहराया नहीं जा सकता है।
या ... सरणी निर्माता, कई तर्क को स्वीकार करता है, जबकि एक सरणी जहां प्रत्येक तर्क सरणी में एक मूल्य है बनाई गई है
Array(1,2,3); // creates an array [1,2,3] etc.
जब आप इस
Array.apply(null, Array(3))
फोन
यह थोड़ा और दिलचस्प है।
apply
पहले तर्क के रूप में this
मूल्य स्वीकार करता है, और के रूप में यह यहाँ उपयोगी नहीं है, यह null
दिलचस्प हिस्सा दूसरा तर्क है, जहां एक खाली सरणी में पारित किया जा रहा है पर सेट है।
apply
के रूप में एक सरणी यह
Array(undefined, undefined, undefined);
बुला तरह स्वीकार करेंगे और तीन सूचकांकों कि खाली नहीं है के साथ एक सरणी बनाता है, लेकिन मूल्य है, जो है यह क्यों ca वास्तव में undefined
लिए निर्धारित किया है एन पुनरावृत्त हो।
टी एल; डॉ
मुख्य अंतर यह है कि Array(3)
तीन सूचकांकों कि खाली हैं के साथ एक सरणी बनाता है। वास्तव में, वे वास्तव में मौजूद नहीं हैं, सरणी की लंबाई है।
apply
का उपयोग कर सरणी निर्माता को खाली सूचकांक के साथ इस तरह एक सरणी में पासिंग Array(undefined, undefined, undefined);
है, जो तीन undefined
सूचकांक के साथ एक सरणी बनाता कर के रूप में ही है, और undefined
वास्तव में एक मूल्य है, इसलिए इसे पहले की तरह खाली नहीं कर रहा है उदाहरण।
map()
जैसे ऐरे विधियां केवल वास्तविक मानों पर ही वास्तविक मूल्यों को पुन: सक्रिय कर सकती हैं, खाली सूचकांक नहीं।
'Array.apply (शून्य, सरणी (9))' * नहीं * 'नई सरणी (9) '। यह 'एरे (9)' को 'एरे()' में नौ पैरामीटर के रूप में फैला रहा है। यहां तक कि अगर यह काम करता है तो यह गलत तरीका है। उदाहरण के लिए आप 'नया ऐरे (1e7) 'कर सकते हैं लेकिन' Array.apply नहीं (शून्य, ऐरे (1e7)) '। – Sheepy
संबंधित: http://stackoverflow.com/questions/22949976/why-does-array-applynull-args-act-inconsistently-when-dealing-with-sparse-a – Sheepy