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

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

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

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

JavaScript

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

Q&A

3回答

1395閲覧

[JavaScript]複数ある関数の実行方法の使い分けに関して

sabx

総合スコア200

ECMAScript

ECMAScriptとは、JavaScript類の標準を定めるために作られたスクリプト言語です。

JavaScript

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

1グッド

2クリップ

投稿2018/05/01 07:41

聞きたいこと

JavaScriptで関数を実行する際に下記のように2種類あるかと思いますが、使い分け等ありますでしょうか。

JavaScript

1// 例1 2// 関数定義をfunctionにて実施後、実行 3function example1(param1) { 4 console.log(param1); 5} 6example("Hello World"); 7 8// 例2 9// 関数への参照値を変数exmaple2に代入後、実行 10example2 = function(param2) { 11 console.log(param2); 12} 13example2(param2);
webarata3👍を押しています

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

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

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

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

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

guest

回答3

0

違いが2つあります(コードで示します)。もっとも、素直に書いていればそう影響するようなものではありません。

javascript

1function difference1(){ 2 // 違いその1:再代入ができるか 3 function declare(){} 4 var expression = function(){}; 5 6 expression = 5; // 単なる変数なので、もちろん代入可能 7 // declare = 7; 関数宣言に代入はできない 8 9 // なお、ES2015の「const」を使えば、変数も再代入不可能にできる 10} 11 12function difference2(){ 13 // 違いその2 巻き上げに関する挙動 14 15 declare(); // 呼べる 16 // expression(); 代入まではundefinedになっているので、呼べない 17 18 function declare(){} 19 var expression = function(){}; 20}

投稿2018/05/01 07:52

maisumakun

総合スコア145199

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

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

0

1と2は基本的には同じですが2はvarで宣言しないと
スコープ内で宣言してもグローバル関数になります

javascript

1(function(){ 2function example1(param1) { 3 console.log(param1); 4} 5example2 = function(param2) { 6 console.log(param2); 7} 8console.log(example1); 9console.log(example2); 10})(); 11console.log(typeof example1); 12console.log(typeof example2);

上記同じ動作にしたいなら
var example2=・・・ にするということ

投稿2018/05/01 08:00

yambejp

総合スコア114896

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

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

maisumakun

2018/05/01 08:08

もはやstrictなコードしか書かないので、暗黙のグローバル宣言のことをほぼ忘れてました。
guest

0

細かい話になりますが、無名関数でFunction.nameが設定されるようになったのはES6からで、ブラウザ実装されたのも最近(Firefoxは2017年4月19日公開のバージョン53から)なので、互換性に注意が必要かもしれません。
Inferred function names

投稿2018/05/01 08:59

Lhankor_Mhy

総合スコア36134

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問