2012-08-17 20 views
5

Tôi cần một mảng đã nhập, cụ thể là Float32Array, của tất cả các số không. Tôi đã nghĩ rằng tôi sẽ phải xóa nó bằng tay, nhưng tôi nhận thấy rằng khi tôi tuyên bố nó, nó đã được zeroed ra. Đây có phải là cái gì đó được xác định trong spec? Tôi có thể dựa vào hành vi này không?Các mảng được nhập Javascript có được khởi tạo thành 0 không?

+0

Ý của bạn là gì bằng cách 'không tham gia'? – KooiInc

+0

bạn có thể hiển thị mã của bạn? javascript không có mảng đã nhập. Một mảng chứa bất cứ điều gì bạn quyết định đưa vào nó; ví dụ. '[1," hello ", {a: 3}]' là một mảng hợp lệ trong javascript. – jackwanders

+0

Đây là những gì tôi nhận được trong bảng điều khiển dành cho Google Chrome. 'a = float32Array mới (10)' trả về '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]'. Tôi đang sử dụng mảng đã nhập vì tôi đang làm việc trong WebGL. Chúng khác với mảng tiêu chuẩn và vì nó chủ yếu dành cho WebGL, nó có một chút bí truyền. Tôi nên xác định điều đó. – SharkCop

Trả lời

5

Theo JavaScript's Typed Array Specification, contents are initialized to 0. Vì vậy, bạn sẽ có thể dựa vào hành vi này.

Lưu ý rằng các mảng đã nhập don't have very good cross browser support yet. Chrome, Safari, Firefox và Opera hỗ trợ nó, nhưng Internet Explorer chỉ giới thiệu hỗ trợ trong IE10.

Tôi cũng nên đề cập rằng mảng đã nhập hiện là extremely slow in Safari so với mảng thông thường. Vì lý do này, có lẽ bạn nên tránh các mảng đã nhập trừ khi bạn không nhắm mục tiêu Safari. Sử dụng các mảng thông thường, tất cả các giá trị mảng được khởi tạo là undefined.

-4

Theo mảng mặc định chứa null nếu bạn xây dựng chúng với kích thước. Kể từ null == 0 bạn có khả năng có thể xem xét nó được điền với 0 hoặc bất kỳ giá trị giả nào khác. Tuy nhiên, bạn sẽ gặp vấn đề nếu bạn cố gắng gọi các phương thức trên các số, chẳng hạn như .toString. Hoặc nếu bạn chạy nó thông qua một hàm mong đợi một dạng số như parseInt.

Tốt nhất, bạn nên luôn luôn khởi một mảng để bạn biết chính xác những gì nó chứa, mặc dù cá nhân tôi chưa bao giờ nghe nói về mảng đánh máy trong JS ...

+0

* Theo mặc định mảng chứa null nếu bạn xây dựng chúng với kích thước *: nope. Hãy thử trong giao diện điều khiển của bạn: 'var a = []; a.length = 5; console.log (a [3]) 'hoặc' var a = new Array (5); console.log (a [3]) ' – KooiInc

+0

Cả hai đều cho tôi một mảng đầy đủ' null ', trừ khi tôi hiểu lầm? –

+0

Có thể có sự khác biệt về trình duyệt? Trong bảng điều khiển của Chrome 'console.log (a)' hiển thị '[undefined × 5]' – KooiInc

Các vấn đề liên quan