質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

389閲覧

関数の呼び出しについて

oqqu

総合スコア7

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/03/28 04:08

JavaScript

1let f; 2{ 3 let o = { name: `lisa`, age: 19 }; 4 f = function() { 5 console.log(`hello,${o.name}`); 6 return o; 7 } 8} 9let oRef = f();

**上のようなコードで実行すると、hello,lisa という実行結果になってしまいます。
自分の予想では何も表示されないと思いました。
9行目でoRefを宣言して、無名関数fを代入したときに、f()が呼び起されたのが原因でしょうか?
**

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

「無名関数fを代入」をするならこうなります。

js

1// let oRef = f(); // これは実行結果を代入している 2// ↓ 3 let oRef = f;

投稿2020/03/28 04:24

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

9行目でoRefを宣言して、無名関数fを代入したときに、f()が呼び起されたのが原因でしょうか?

コンソールに表示された原因は合っていますが、解釈は違います。

9 行目で f()が呼び起された(実行結果)を代入する時点で、ご質問のコードに無名関数は存在していません。
(4-7 行目で 変数 f に 無名関数を代入した時点で、関数名は f になっています)。

function キーワードを使う関数宣言の特徴は次のコードで確認できます。

javascript

1function test(){}; 2console.log( window.test ); // var test の変数宣言に相当する。関数オブジェクト test 3var f = function(){}; 4console.log(f.name); // "f" 変数名が関数名になる。 5var f2 = f; 6console.log( f2.name ); // "f" 最初に代入された関数名。 7 8console.log( (function myfunc(){}).name ); // "myfunc" 9console.log( (function (){}).name ); // "" (匿名関数/無名関数)

投稿2020/03/29 01:27

AkitoshiManabe

総合スコア5432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問