ホームページ > 記事 > ウェブフロントエンド > JavaScript の奇妙な動作 配列_JavaScript のヒント
プログラミング言語における配列の重要性は自明のことですが、JavaScript の配列は最も一般的に使用されるオブジェクトの 1 つであり、弱い型であるため、非常に柔軟で強力です。同じ型またはそのサブタイプの要素のみを格納できる Java などの厳密に型指定された高級言語の配列とは異なり、JavaScript は複数の型の要素を同じ配列に格納でき、長さを動的に調整することもできます。データが増加するにつれて、または配列の長さの自動変更を減らします。
今日は JavaScript の配列を確認し、彼の奇妙な動作をいくつかまとめました。間違いがある場合は、ご指摘ください。
奇妙な 1: Array() コンストラクター関数は、新しいキーワードを使用せずに呼び出すことができます:
Array() コンストラクターは、配列の要素として渡されたパラメーターを使用して配列を作成します。通常、次のように呼び出します。
var a = new Array(1, 2, "bom!"); a.length; //3 console.log(a); //[1, 2, "bom!"]
var a = Array(1, 2, "bom!"); a.length; //3 console.log(a); //[1, 2, "bom!"]
function Array(args) { //如果,this不是Array的实例的话, //说明不是通过new调用的,则在这里再重新调用 if( !this instanceof Array) { return new Array(args); }//后面是正常调用时的实现代码<br />//...<br />}
奇妙な 2: コンストラクターにパラメーターが 1 つだけ渡された場合、動作は予測できません
var a = new Array(12); console.log(a.length); //12 console.log(a); //[]
var a = new Array(1.1); //Uncaught RangeError: Invalid array length(…)
var a = new Array("1.1"); console.log(a.length); // console.log(a); //["1.1"]
var a = []; //空数组 var a = [1, 1, "bom"]; //三个元素 var a = [12]; //一个元素,并且元素是12
奇妙な 3: 配列の長さ属性は変更可能 (書き込み可能)
以下のように長さを2から100に直接変更して修正成功しました! ! !
var a = [1, 2, 3, 4]; console.log(a.length); //4 a.length = 100; console.log(a.length); //100
var a = [1, 2, 3, 4]; a.length = 100; console.log(a[10]); //undefined console.log(99 in a); //false
var a = [1, 2, 3, 4]; a[99] = undefined; console.log(a.length); //100
var a = [1, 2, 3, 4]; a[99] = undefined; console.log(99 in a); //true; console.log(98 in a); //false console.log(a.length); //100