2012-08-17 10 views
5

मुझे सभी टाइपों की एक टाइप की गई सरणी, विशेष रूप से एक Float32Array की आवश्यकता है। मैं सोच रहा था कि मुझे इसे मैन्युअल रूप से साफ़ करना होगा, लेकिन मैंने देखा कि जब मैंने इसे घोषित किया था, तो यह पहले से ही शून्य हो गया था। क्या यह कुछ ऐसा है जो spec में निर्दिष्ट है? क्या मैं इस व्यवहार पर भरोसा कर सकता हूं?क्या जावास्क्रिप्ट टाइप किए गए सरणी 0 से शुरू हुई हैं?

+0

'शून्य आउट' से आपका क्या मतलब है? – KooiInc

+0

क्या आप अपना कोड दिखा सकते हैं? जावास्क्रिप्ट में टाइप किए गए सरणी नहीं हैं। एक सरणी में जो भी आप इसे डालने का निर्णय लेते हैं; जैसे '[1," हैलो ", {ए: 3}] 'जावास्क्रिप्ट में मान्य सरणी है। – jackwanders

+0

यही वह है जो मुझे Google क्रोम के लिए कंसोल में मिलता है। 'ए = नया Float32Array (10)' रिटर्न '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]'। मैं टाइप किए गए सरणी का उपयोग कर रहा हूं क्योंकि मैं वेबजीएल में काम कर रहा हूं। वे मानक सरणी से अलग हैं, और चूंकि यह मुख्य रूप से वेबजीएल के लिए है, यह थोड़ा गूढ़ है। मुझे यह निर्दिष्ट करना चाहिए था। – SharkCop

उत्तर

5

JavaScript's Typed Array Specification, contents are initialized to 0 के अनुसार। तो आप इस व्यवहार पर भरोसा करने में सक्षम होना चाहिए।

ध्यान रखें कि टाइप किए गए सरणी don't have very good cross browser support yet। क्रोम, सफारी, फ़ायरफ़ॉक्स और ओपेरा इसका समर्थन करते हैं, लेकिन इंटरनेट एक्सप्लोरर ने केवल आईई 10 में समर्थन प्रस्तुत किया है।

मुझे यह भी जिक्र करना चाहिए कि टाइप किए गए सरणी वर्तमान में extremely slow in Safari सामान्य सरणी की तुलना में हैं। इस कारण से, जब तक आप सफारी को लक्षित नहीं कर रहे हैं, तब तक आप टाइप किए गए सरणी से बचने से बेहतर तरीके से बेहतर हो सकते हैं। सामान्य सरणी का उपयोग करके, सभी सरणी मान undefined के रूप में प्रारंभ किए जाते हैं।

-4

डिफ़ॉल्ट सरणी में null होता है यदि आप उन्हें आकार के साथ बनाते हैं। चूंकि null == 0 आप संभावित रूप से 0, या किसी अन्य झूठी मान से भरे हुए विचार कर सकते हैं। हालांकि यदि आप .toString जैसे नंबरों पर कॉल करने का प्रयास करते हैं तो आप समस्याओं में भाग लेंगे। या यदि आप इसे किसी ऐसे फ़ंक्शन के माध्यम से चलाते हैं जो parseInt जैसे संख्यात्मक रूप की अपेक्षा करता है।

आदर्श रूप में, आप हमेशा एक सरणी आरंभ करना चाहिए ताकि आप जानते हैं कि यह वास्तव में क्या होता है, हालांकि व्यक्तिगत रूप से मैं जे एस में टाइप सरणियों कभी नहीं सुना है ...

+0

* यदि आप उन्हें आकार *: नोप के साथ बनाते हैं तो डिफ़ॉल्ट सरणी में शून्य होती है। अपने कंसोल में आज़माएं: 'var a = []; ए। लम्बाई = 5; console.log (एक [3]) 'या' var a = new Array (5); console.log (एक [3]) ' – KooiInc

+0

उनमें से दोनों मुझे 'शून्य' से भरा सरणी देते हैं, जब तक कि मैं गलतफहमी नहीं कर रहा हूं? –

+0

शायद ब्राउज़र अंतर है? क्रोम कंसोल में 'console.log (ए)' दिखाता है '[अपरिभाषित × 5] ' – KooiInc

संबंधित मुद्दे