私はそれが動作する好奇心符号なし機能
var x={function(){return 2}};
のために、今日の私のコンソール上でこれを実行しました。しかし、なぜ?その無名関数はどのように呼び出されますか?私はこの構文のためのポイントは、これはshorthand method definitionfunction
の持つオブジェクトリテラルです
私はそれが動作する好奇心符号なし機能
var x={function(){return 2}};
のために、今日の私のコンソール上でこれを実行しました。しかし、なぜ?その無名関数はどのように呼び出されますか?私はこの構文のためのポイントは、これはshorthand method definitionfunction
の持つオブジェクトリテラルです
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Object_initializerがfunction保持しているキー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
はオブジェクトのキー名が正しくありません。
動作するように表示されていない。
var x = {
function(){
return 2
}
};
x.function() // => 2
はあまり意味がありませんfunction
メソッドに名前を付けるために、それは有効なJavaScriptです。
それだ速記メソッド名(ES6):ここでobject initializer
var o = {
property([parameters]) {},
};
これは正しく、ダウンボートを理解していない! typeof xはオブジェクトとtype.of x.function()を与えますあなたに番号を与えます(2) – aliasav
@aliasavまさに。 DownvoterはJavaScriptを知らない:) –
正解。しかし、コメント-1のために-1 'DownvoterはJavaScript'を知らない。 –