-PR-
解決済み

javascript関数宣言に;をつけてもよいの?

  • すぐに回答を!
  • 質問No.8222846
  • 閲覧数1568
  • ありがとう数3
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (1/1)

javascriptの関数宣言について。
あるjavascriptの本に関数宣言と名前付き関数、無名関数についてかいてありました。
これらの違いは最後が;でおわっているかどうかとかいてありました。
関数宣言では;はつけない。
つまり、
function foo() {
//関数本体の記述
}
なので;はいらず、名前付き関数と無名関数は;は必要というのはわかります。
が、別の本では、
function test() {
var el = document.getElementById('mydiv'),
ch = el.childNodes,
len = ch.length,
name = '';
for ( var count = 0; count < len; count++) {
name = ch[conun].nodeName;
}
return name;
};
と、セミコロンが最後に記述されていました。
いままで、関数宣言にはセミコロンをつけずにかいていたので、
関数宣言にセミコロンが記述されていておどろきました。
ながくなりましたが、関数宣言には、セミコロンはつけてもよいのでしょうか?
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル14

ベストアンサー率 49% (4220/8591)

他カテゴリのカテゴリマスター
>あるjavascriptの本に関数宣言と名前付き関数、無名関数についてかいてありました。
>これらの違いは最後が;でおわっているかどうかとかいてありました。

理由と結果が逆で、間違ってますね。

セミコロンは関数式の後ろには必須(なケースがある)ですが, 関数宣言の後ろは(常に)省略可能です。
セミコロンの有無で何かを判断するのは話が逆。

関数式の後ろでも次の行の内容によってはセミコロンは省略可能です。
var a=function(){ return 1 }
var b=123
は、OKです。
var a=function(){ return 1 }
(function(){return 2})()
はNGです。この場合、2行目末にセミコロン必須。無いと2行目と3行目がつながって
var a=((function(){ return 1 })(function(){return 2}))()
と書いたのと同じになって、文法的には正しく、関数呼び出し後、
var a=1()
となり、実行時エラー。
var a=function(){ return function(){return 99} }
(function(){return 2})()
だとこの文ではエラーにならないのでさらにやっかい。
ここまでややこしくなくても、
var x
var a=function(){ return 1 }
(x=123)
でもNG。括弧がだめです。
ということで、関数式で文が終わる場合は、必ずセミコロンを付けた方が良いです。

そもそも関数式が式の途中、例えば他の関数の引数になっている場合等は、当然ですがセミコロンは付けませんよね。
foo( function(){return 1;} );
とか。これを以てしてもその本の間違いは明らか。


なお、言うまでも無いですが「次の行の内容によっては行末のセミコロン省略可」は関数式で終わる文・式に限らずどんな文・式もです。
普通は文末・式末には付けておいた方が良いでしょうけど。

もちろん、「関数宣言だけつけず、それ以外の文・式は全部付ける」という方針でもいいと思いますが、「 } のあとは必ず付ける」も機械的ルールでわかりやすい。
お礼コメント
kazutani

お礼率 100% (1/1)

そうなんですか!
わかりました!
納得です!
ありがとうございます!!
投稿日時 - 2013-08-18 02:10:39
-PR-
-PR-
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

-PR-

ピックアップ

-PR-
ページ先頭へ