2016-10-27 5 views
1

私はそれが動作する好奇心符号なし機能

var x={function(){return 2}}; 

のために、今日の私のコンソール上でこれを実行しました。しかし、なぜ?その無名関数はどのように呼び出されますか?私はこの構文のためのポイントは、これはshorthand method definitionfunctionの持つオブジェクトリテラルです

答えて

1

https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Object_initializerfunction保持しているキーfunctionを持つオブジェクトとしてxを解釈します。

FirefoxおよびChromeは、このステートメントを解釈します(ECMAScriptのバージョンによって異なる)。 IE11はこのステートメントを解釈しません。

たぶん、以下のコードでは、より多くのそれを明確に:

window.onload = function() { 
 

 
    // Is an object with key "function" which holds a 'function' object 
 
    var x = { 
 
    function() { 
 
     return 2 
 
    } 
 
    }; 
 
    console.log(x); 
 

 
    // Call the function 
 
    console.log(x.function()); 
 

 
    // unwrap it for better clarity 
 
    var y = function() { 
 
    return 2 
 
    }; 
 
    console.log(y); 
 
    var z = { 
 
    y 
 
    }; 
 
    console.log(z); 
 
    console.log(z.y()); 
 
}

のは、別のケースを見てみましょう:

var x = { 
 
    y() { 
 
    return 2 
 
    } 
 
}; 
 
console.log(x); 
 
console.log(x.y());

ショート答え:ブラウザは文を解釈できますが、functionはオブジェクトのキー名が正しくありません。

0

動作するように表示されていない。

var x = { 
    function(){ 
    return 2 
    } 
}; 
x.function() // => 2 

はあまり意味がありませんfunctionメソッドに名前を付けるために、それは有効なJavaScriptです。

+0

これは正しく、ダウンボートを理解していない! typeof xはオブジェクトとtype.of x.function()を与えますあなたに番号を与えます(2) – aliasav

+0

@aliasavまさに。 DownvoterはJavaScriptを知らない:) –

+0

正解。しかし、コメント-1のために-1 'DownvoterはJavaScript'を知らない。 –

関連する問題