2016-07-12 11 views
0

私はあなたが保存する機能を使用する必要はありませんキーなぜそれは未定義に戻っていますか?

function my_reference() { 
    return { 
    30:'', 
    31:'ERR591', 
    32:'ERR761', 
    33:'ERR671', 
    34:'ERR551', 

    }; 
} 

console.log(my_reference[31], 
      my_reference.31, 
      my_reference().31, 
      my_reference()[31] 
); 
+3

なぜ関数を実行する必要があるのか​​、なぜ 'my_reference()[31]'が動作するのか – epascarello

+0

my_reference()['31'] – Thevs

答えて

0

を見つけるために、値を見つけるためにキーを使用して照会することによって、または値によって、以下のような方法として保存し、一定の値を取得したいです参考文献:

var reference = { 
    30:'', 
    31:'ERR591', 
    32:'ERR761', 
    33:'ERR671', 
    34:'' 
}; 

console.log(reference[31]); 
1

あなたはそれが結果を返すようにしたい場合は、この関数を呼び出す必要があり、呼び出される関数:

my_reference() 

だから、最初の両方の線ますmy_referenceはそれを呼び出す機能も自己を返しませんので、動作しません:属性は数字にすることはできませんので

my_reference[31] 
my_reference.31 

第三もconsole.log(my_reference().31);が動作しません。

これが役に立ちます。

1

あなたは..あなたがしたいプロパティmy_reference()とし、そのアクセスした後、関数を実行する必要がありますが、JavaScriptのオブジェクト内のキーは常に文字列です:読み取ろうと

console.log(my_reference()['31']); 
4
my_reference[31], 

関数のプロパティ(存在しない)。プロパティは戻り値がであるオブジェクト上にあり、関数を呼び出します。識別子として番号を使用しようと

my_reference.31, 

。これは許可されていません。識別子として番号を使用しようと

my_reference().31, 

。これは許可されていません。

my_reference()[31] 

これは

ここ
0

が固定コード

function my_reference() { 
    return { 
    _30:'', 
    _31:'ERR591', 
    _32:'ERR761', 
    _33:'ERR671', 
    _34:'ERR551' 
    }; 
} 

var f = my_reference(); 

console.log(f["_31"]); 
console.log(f._31); 
console.log(my_reference()._31); 
console.log(my_reference()["_31"]); 
で動作します 変数は、数字だけで指定することはできません

最初の二つは、返されたオブジェクトである必要があります

関連する問題