番号1は空の配列に暗黙的にキャストされていますか?1 [1]がjavascriptで未定義に評価されているのはなぜですか?
> a = 1[1]
undefined
> console.log(a)
undefined
undefined
番号1は空の配列に暗黙的にキャストされていますか?1 [1]がjavascriptで未定義に評価されているのはなぜですか?
> a = 1[1]
undefined
> console.log(a)
undefined
undefined
暗黙的に空の配列に番号1のキャストですか?数値は、暗黙的に(および一時的)である
号は数オブジェクトに変換され、プロパティ1
は、そのオブジェクトにアクセスされます。
ブラケット表記法を使用している([1]
)は配列に特異的ではない、毎オブジェクトプロパティは、ブラケット表記を介してアクセスすることができます。私。次の2つは等価です。obj.foo
(ドット表記)とobj['foo']
(角カッコ表記)です。
var numObj = new Number(1);
console.log(numObj[1]);
暗黙的な変換は、あなたがにアクセスするたびに起こる:
数は、しかし、プロパティ1
を持っており、非既存のプロパティにアクセスするundefined
を返していないオブジェクトそのプロパティが存在するかどうか、またはそのプロパティがのプリミティブ値にあるかどうかない。次の例では、プリミティブ数値も暗黙的オブジェクトに変換され、次いで、そのtoFixed
メソッドが実行される:
var num = 42;
console.log(num.toFixed(2));
// or equivalently to your example:
console.log(42['toFixed'](2))
番号を、文字列、ブール値およびシンボルは、オブジェクトの等価物を有します。 NullとUndefinedはしません。
「1」は数字「 – hackerrdave
」です。なぜなら、数字にはプロパティ '1'がないからです。 – Thomas
[なぜ[0 [0] 'が構文的に有効なのですか?]とほとんど同じです((1)[1] http://stackoverflow.com/questions/29250950/why-is-00-syntactically-valid/29251025#29251025) – jfriend00