स्पष्टीकरण अन्य उत्तर की आपूर्ति में से कोई भी है कि है कि मूल तर्क हैं अभी भी उपलब्ध है, लेकिन में मूल स्थिति में नहींarguments वस्तु।
argumentsवस्तु प्रत्येक वास्तविक कार्य करने के लिए प्रदान की पैरामीटर के लिए एक तत्व होता है। जब आप फोन aनंबर: आप तीन तर्कों की आपूर्ति 1, 2और, 3। तो, argumentsशामिल है [1, 2, 3]।
function a(args){
console.log(arguments) // [1, 2, 3]
b(arguments);
}
जब आप कॉल करते हैं b, हालांकि, आप बिल्कुल एक पास करते हैं तर्क: aकी argumentsवस्तु। तो argumentsशामिल [[1, 2, 3]](यानी एक तत्व है, जो है aकी argumentsवस्तु है, जो मूल तर्क युक्त गुण है a)।
function b(args){
// arguments are lost?
console.log(arguments) // [[1, 2, 3]]
}
a(1,2,3);
जैसा कि @ नोट प्रदर्शित किया गया है, आप applyएक सेट प्रदान करने के लिए उपयोग कर सकते हैंarguments कॉल में ऑब्जेक्ट ।
निम्नलिखित समान परिणाम प्राप्त करता है:
function a(args){
b(arguments[0], arguments[1], arguments[2]); // three arguments
}
लेकिन applyसामान्य मामले में सही समाधान है।
argumentsनहीं है वास्तव में एक सरणी (बल्कि एक उद्देश्य यह है कि लागू सरणी की तरह-अर्थ विज्ञान ) और इसलिए यह पूरी तरह से पहली नजर में स्पष्ट नहीं है कि क्या यह एक वास्तविक सरणी के रूप में एक ही तरीके से इस्तेमाल किया जा सकता कर सकते हैं।