彼らはどちらも同じことを少し違った形で言っています。
私はあなたがトップのステートメントが関数が参照を返すと言っていると仮定していると思います。ブラウザは、関数宣言を評価するとき、それは同じ名前として持つ変数としてだけでなく 関数を作成し、
P 464
:
省略部分で、このような文を読みます関数を呼び出し、 は関数参照を変数に格納します。
P 465
関数への参照を返さない
関数宣言。 ではなく、
は関数の名前で変数を作成し、その関数に新しい関数 を割り当てます。
ここで、省略された部分をどちらのステートメントにも追加できます。彼らは同じことを言っているが、関数宣言が関数への参照を返さないことを明らかにしている。最初の声明は何かを返すとは言わないので、これは矛盾しない。
最初の文は、関数と同じ名前で作成された変数に関数参照を格納していることを示しています。これは関数宣言が何かを返すとは仮定しないでください。
宣言と呼び出しの間に混乱があるようです。両方の非常に単純な定義があります。
宣言
何何かを定義するという行為は、このような変数、オブジェクト、メソッド、または関数として、です。 JavaScriptでは、関数を宣言しても何も返されません。
function func() {
return "returned";
}
またしかし、これは宣言を意味するものではありません。この
var funk = function func() {
return "returned";
}
が何かを返し行うことができます。単に、funk
が関数への参照を指していることを意味します。後でfunk()
を使用して、この関数を呼び出すことができます。
呼び出し
呼び出し、または、関数またはメソッドを実行する動作。
func();
上記は、宣言で定義されているように "returned"を返します。 JavaScriptでは、関数自体の宣言は何も返しません。
こんにちは、あなたはあなたの質問でそれらを言及していないので、[java]と[C++]タグを削除しました。 – hexafraction
See - > https://jsfiddle.net/2vz577n2/1/ – adeneo