ECMAScript 5.1, भाग 8.8
सूची प्रकार का उपयोग फ़ंक्शन कॉल में, नई अभिव्यक्तियों में तर्क सूचियों (11.2.4 देखें) के मूल्यांकन की व्याख्या करने के लिए किया जाता है, और अन्य एल्गोरिदम में जहां मूल्यों की एक सरल सूची की आवश्यकता होती है .... ये क्रम किसी भी लम्बाई के हो सकते हैं।
इसलिए मानक में कोई सीमा नहीं है। बेशक, यदि आपका कोड वास्तविक दुनिया में चलता है, मानकों-भूमि में नहीं, तो स्पष्ट रूप से कुछ सीमा है (जैसे ब्रह्मांड में कणों की संख्या)।
किसी फ़ंक्शन को पैरामीटर पास करने के दो तरीके हैं।
- "सचमुच":
f(a, b, c)
- आवेदन के साथ ():
f.apply(null, [a, b, c])
यह उत्तरार्द्ध तरीका बड़े तर्क सूचियों के लिए अधिक यथार्थवादी परिदृश्य है।
अपने वर्तमान ब्राउज़र के लिए इनमें से प्रत्येक के लिए सीमाएँ देखने के लिए इस JSField पर जाएँ ।
मैंने स्वयं कुछ ब्राउज़र आज़माए:
| apply() | literal
----------------------------
Chrome 14 | 131155 | 32767
Chrome 35 | 126213 | 65535
Firefox 30 | 500001 | 65535
IE 9 | 254335 | 65533
IE 10 | 253667 | 65533
IE 11 | 252447 | 65533
Opera 22 | 126063 | 65535
Safari 4 | 524215 | 524205
Safari 7 | 65537 | 522159
मैंने विभिन्न मशीनों पर इनमें से कई नंबरों में अंतर देखा, इसलिए मेरा मानना है कि केवल ब्राउज़र (ओएस) के अलावा अन्य कारक भी हैं।
यह एक वास्तविक मुद्दा है, कुछ सामान्य ज्ञान नहीं है। एक वास्तविक दुनिया उदाहरण:
Google क्लोजर लाइब्रेरी ने निम्नलिखित फ़ंक्शन को परिभाषित किया।
goog.crypt.byteArrayToString = function(array) {
return String.fromCharCode.apply(null, array);
};
यह केवल तभी काम करता है जब स्ट्रिंग की लंबाई तर्क की संख्या के लिए ब्राउज़र सीमा के भीतर थी जिसे साथ पारित किया जा सकता है Function.prototype.apply।
फ़ंक्शन को बाद में पैच किया गया था , जिससे फ़ंक्शन काफी जटिल हो गया था।
FYI करें, मार्च 2012 में एक खुला Webkit मुद्दा दायर किया गया है जो तर्क सीमा पर चर्चा करता है।