[解決済み] Javascriptのすべての関数は値を返さなければならないのでしょうか?
質問
Netbeansを使用して、各関数にプロフェッショナルなコメントを追加して書いています。そこで、私はそれぞれの関数を
/**
を押して、それから
Enter
を押すと、Netbeansが以下の関数に対してデフォルトのコメントスキームを実行します。
今まで、私はこれをPHP言語に対してのみ使用していましたが、この場合、Netbeansは常に、以下のようなコメントスキームを追加していました。
@returns {type}
の部分をコメントスキームに追加するだけでした。
return
ステートメントが含まれている場合のみです。いわゆるプロシージャ(値を返さない関数)の場合、この部分が欠落していました。
今日、私はJavascript関数について同じことを試み、Netbeansは
@returns {undefined}
部分をコメントスキームに追加しました。
これは私を混乱させました。Netbeansは、すべてのJavascript関数が何かを返さなければならないことをこのように示唆していますか?私はどうしたらよいでしょうか。そのコメントスキーム部分を無視(または削除)するか、提案(これが提案である場合)に従って、以下のものを追加します。
return false;
をそのような関数の末尾に追加することです。
どのように解決するのですか?
簡単に言うと、「いいえ」です。
は
リアル
答えはイエスです。JSエンジンは、ある関数が処理を終えたことを通知する必要があり、これは関数が何かを返すことで行われます。これはまた、なぜ
の代わりに
明示的な return 文がない関数は
undefined
を返すように、戻り値を持たないC(++)関数は、(そのシグネチャはこれを反映して)
void
:
void noReturn()//return type void
{
printf("%d\n", 123);
return;//return nothing, can be left out, too
}
//in JS:
function noReturn()
{
console.log('123');//or evil document.write
return undefined;//<-- write it or not, the result is the same
return;//<-- same as return undefined
}
また、JSでは、ほとんどの他の言語と同様に、関数の戻り値を単に無視することも自由にできますし、これは非常に多く行われています。
(function()
{
console.log('this function in an IIFE will return undefined, but we don\'t care');
}());
//this expression evaluates to:
(undefined);//but we don't care
いくつかの 非常に 低レベルでは、return はある種のジャンプに変換されます。もし関数が本当に 何も を返した場合、次の関数を呼び出したり、イベントハンドラなどを呼び出したりするために、いつ何を呼び出すかを知る方法はありません。
というわけで、おさらいです。JSの関数は、あなたのコードに関しては何も返す必要はありません。しかし、JSエンジンが関係している限りでは、関数
は常に
は何かを返します。
return
ステートメントによって明示的に、あるいは暗黙的に何かを返します。関数が暗黙的に返す場合、その戻り値は常に未定義となります。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] JavaScriptでドロップダウンリストの選択値を取得する
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] JavaScriptで長い配列を小さい配列に分割する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] なぜ "use strict "はパフォーマンスを10倍向上させるのか?
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
-
[解決済み] jQueryのバージョン1、バージョン2、バージョン3の違いは何ですか?[クローズド]
-
[解決済み] JavaScriptでDIVを表示・非表示にするには?