Javascriptにはいろいろな記述方法がありますが
なぜみんな小難しい方の記述方法を選択するのでしょうか?
例えば、ファンクション
以下の1のように書けばいいのに、わざわざ2のように書くメリットを教えて下さい
1だとファンクションの位置を気にせず呼び出すことが出来るのになんで2みたいにするんでしょうか
・メモリの節約なのか?
・実行速度優位性なのか?
・1はレガシーで2が最新、W3C的な標準化がJavascriptにもあるのか?
・なんか一般的な書き方じゃないほうが、プロっぽくてカッコイイからか?
さすがに一番最後の理由じゃないと思いますが
熟練者のかたお教え下さいませ
(1)
function hoge (){
}
(2)
var hoge = function(){
}
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
まず名前ですが、
(1) 関数宣言
(2) 関数式
です。
関数式というのは、関数宣言と比較して
* 関数評価のタイミングが実行時になった
* 文から式になった
* 関数オブジェクトを変数に代入する処理が無くなった
が違います。
この違いがあるので、以下の様に関数式を使うことがあります。
* 関数の引数に使うコールバック関数が、短く無駄なく書ける
例) formElement.addEventListener('submit',function(e){},false);
* オブジェクトのプロパティに関数を代入する処理が、短く無駄なく書ける
例) object.property = function(){};
* 関数型プログラミングっぽい記述ができてカッコいい(だけじゃなく便利ですよ)
参考) http://www.oreilly.co.jp/books/9784873116600/
しかも JavaScript の新機能として、関数式を更に短く便利にした
「アロー関数式」が導入される見込みですので、関数式を多用する流れは今後も続きそうです
参考) https://developer.mozilla.org/ja/docs/Web/JavaSc …
No.3
- 回答日時:
細かいことを挙げればいろんな違いがありますが、ぶっちゃけ気分の問題です。
もっとちゃんと言えば、機能の違いではなく、意味の違いで使い分けられているのです。
つまり、(2)は変数に代入するということを強調しているのです。
例えばこういう例が考えられます。
function hoge() {
var x = 1
var y = function () { ...... }
return {x: x, y: y}
}
これであればxとyが同列に見えた方が気持ちいいから代入の書き方を選んでいるのです。
それと、(2)は別に何も小難しくありません。
ただ関数を変数に代入しているだけで、どちらかと言うと独特の記法である(1)の方が特殊です。
JavaScriptでは関数はただの「呼ぶことのできる」オブジェクトであり、他の値と変わらない一級市民なのです。
むしろ、(1)のような書き方をする時こそ、特殊であり、関数を特別視し、宣言して「設置する」という強い意味が含まれてるとも言えます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript JavaScriptの即時関数の書き方 1 2022/11/29 09:52
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
- JavaScript 変数のスコープの問題? 3 2022/06/23 09:32
- JavaScript jqueryとJavaについて 2 2022/05/16 22:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
追加ボタンを押した際に ok ボ...
-
フォームが空欄の時にフォーム...
-
GASに文字列として関数を入れる...
-
特定の文字列を複数抜き出した...
-
初心者です。gulpでコンパイル...
-
階層別の組織図の自動作成について
-
①入力フォーム→②確認表示画面→③...
-
Q&A掲示板の入力フォームに文字...
-
ボタンを押したあとに画像を表...
-
コードレビューをお願いします。
-
React hooksが値を返して配列変...
-
フロントエンドフレームワーク...
-
画面遷移を行わずに同一ページ...
-
ローディングアニメーションの...
-
jQueryで同じクラス名のものを...
-
ジャバスクリプトについて。
-
プログラムについて。
-
メールフォームの日付入力フォ...
-
二次元配列を使って順位をだす...
-
iOSのみダブルタップが必要
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二次元配列を使って順位をだす...
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
iOSのみダブルタップが必要
-
ジャバスクリプトについて。
-
画面遷移を行わずに同一ページ...
-
特定の文字列を複数抜き出した...
-
指定時間になったら、WEBサイト...
-
追加ボタンを押した際に ok ボ...
-
①入力フォーム→②確認表示画面→③...
-
スマホ上で、左右スワイプで次...
-
読み込んだQRコードをフォーム...
-
フロントエンドフレームワーク...
-
React hooksが値を返して配列変...
-
GASでGoogleフォームの自動返信...
-
初心者です。gulpでコンパイル...
-
階層別の組織図の自動作成について
-
HTMLで作った時報アプリが動き...
-
jQueryで同じクラス名のものを...
おすすめ情報