2017-08-21 12 views
1

これは一種の疑問な質問ですが、範囲外のインデックスで​​に値を追加していたため、コードにエラーがありました。しかし、JSエンジンは何のエラーも発生していない、それはちょうど追加の値で何もしていないようだ。例えばJS Uint16Arrayは範囲外例外を発生させません

:標準JSアレイは新しい値を付加し、配列のサイズを増加させるだろう

>> var uint16 = new Uint16Array(2); 
>> uint16[0] = 42; 
>> uint16[1] = 32; 
>> uint16[2] = 12; 
>> uint16 
Uint16Array(2) [42, 32] 

>> var arr = new Array(2); 
>> arr[0] = 42; 
>> arr[1] = 32; 
>> arr[2] = 12; 
>> arr 
(3) [42, 32, 12] 
我々は​​でこの動作を持っていると、なぜそれが範囲の例外のうちのいずれかの種類を提起しない理由

は誰もが知っていますか?

+0

このjavascriptエンジンは? v8?等? –

+0

配列に 'push 'する必要があります。 –

+1

@ DanielA.White TypedArraysにはプッシュメソッドがありません。あなたは "あなたがプッシュする必要がある"ということを何を意味するのですか? –

答えて

1

このように定義されているためです。多分それは変更されますが、あなたは検索しません入力されたアレイ上のインデックス付きプロパティを取得または設定し、

しかし範囲指数のうちでのアクセス(読み取りまたは書き込み)しようとすると、今のところ、それは上げて例外ではないだろうこのプロパティのプロトタイプチェーンでは、インデックスが範囲外であっても

あなたはTypedArray https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray

そしてボーナスについての詳細情報を見つける:あなたは、配列のこの種のpush, pop...のような通常の方法を持っていません。

+0

よろしいですか? – jobou

関連する問題