स्पष्टीकरण अन्य उत्तर की आपूर्ति में से कोई भी है कि है कि मूल तर्क हैं अभी भी उपलब्ध है, लेकिन में मूल स्थिति में नहीं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
नहीं है वास्तव में एक सरणी (बल्कि एक उद्देश्य यह है कि लागू सरणी की तरह-अर्थ विज्ञान ) और इसलिए यह पूरी तरह से पहली नजर में स्पष्ट नहीं है कि क्या यह एक वास्तविक सरणी के रूप में एक ही तरीके से इस्तेमाल किया जा सकता कर सकते हैं।