[解決済み] JavaScriptネスト関数
2022-10-13 08:14:56
質問
javascriptのコードで、理解できないものがあります。
function dmy(d) {
function pad2(n) {
return (n < 10) ? '0' + n : n;
}
return pad2(d.getUTCDate()) + '/' +
pad2(d.getUTCMonth() + 1) + '/' +
d.getUTCFullYear();
}
function outerFunc(base) {
var punc = "!";
//inner function
function returnString(ext) {
return base + ext + punc;
}
return returnString;
}
関数を別の関数の中で定義するにはどうしたらよいでしょうか?my()関数の外からpad2()を呼び出すことは可能でしょうか?
何か光を当ててください。ありがとうございます。
どのように解決するのですか?
関数は、JavaScriptにおける変数のもう一つのタイプです(もちろん、いくつかのニュアンスはありますが)。別の関数内に関数を作成すると、変数のスコープを変更するのと同じ方法で関数のスコープが変更されます。これは、グローバルな名前空間の汚染全体を減らすためにクロージャで使用する場合に特に重要です。
別の関数内で定義された関数は、関数の外部からアクセス可能なオブジェクトにアタッチされていない限り、関数の外部からはアクセスできません。
function foo(doBar)
{
function bar()
{
console.log( 'bar' );
}
function baz()
{
console.log( 'baz' );
}
window.baz = baz;
if ( doBar ) bar();
}
この例では、baz 関数は
foo
関数が実行された後に使用できるようになり、オーバーライドされた
window.baz
. に含まれるスコープ以外のコンテキストでは、bar 関数は使用できなくなります。
foo
関数に含まれるスコープ以外のコンテキストでは利用できません。
を別の例として
function Fizz(qux)
{
this.buzz = function(){
console.log( qux );
};
}
は
Fizz
関数はコンストラクタとして設計されており、実行時に
buzz
関数を割り当てるように設計されています。つまり、次のような使い方をします。
const obj = new Fizz();
obj.buzz();
を呼び出した後、オブジェクトを保持する必要がない場合は、より簡潔に
buzz
):
new Fizz().buzz();
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] CORS: 認証モードは 'include' です。
最新
-
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では!{}[true]がtrueに評価されるのですか?
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] jQueryで入力ファイルが空かどうかをチェックする方法
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] jQueryのバージョン1、バージョン2、バージョン3の違いは何ですか?[クローズド]
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?