[解決済み】関数定義のためのconstの正しい使い方
質問
を使用して設定できる値の種類に制限はありますか?
const
JavaScript の、特に関数について教えてください。これは有効なのでしょうか?確かに動作はしますが、何らかの理由でバッドプラクティスとみなされるのでしょうか?
const doSomething = () => {
...
}
ES6では、すべての関数をこのように定義すべきなのでしょうか?もしそうなら、これが浸透していないような気がします。
どうすればいい?
やったことは問題ないのですが、関数宣言と関数式の違いを覚えておく必要があります。
関数宣言、ということです。
function doSomething () {}
は完全にスコープの先頭に吊り上げられます (そして
let
と
const
もブロックスコープされています)。
つまり、以下のようにするとうまくいきます。
doSomething() // works!
function doSomething() {}
関数式、ということです。
[const | let | var] = function () {} (or () =>
無名関数の作成ですか(
function () {}
) を作成し、変数を作成し、その変数にその無名関数を代入する。
つまり、スコープ内の変数のホイストに関する通常のルール -- ブロックスコープの変数(
let
と
const
として吊り上げない。
undefined
をブロックスコープの先頭に置く。
ということになります。
if (true) {
doSomething() // will fail
const doSomething = function () {}
}
のため、失敗します。
doSomething
が定義されていない。(これは
ReferenceError
)
を使用するように変更した場合
var
に初期化され、変数のホスティングが行われます。
undefined
そのため、上記のコードのブロックはまだ動作しません。 (この場合
TypeError
というのは
doSomething
は呼び出した時点では関数ではありません)
標準的な慣行としては、常に仕事に適したツールを使用することです。
Axel Rauschmayerがes6のセマンティクスを含むスコープとホイスティングについて素晴らしい投稿をしています。 ES6における変数とスコープ
関連
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み】JavaScriptのボタンonclickが機能しない
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] どのDOM要素にフォーカスがあるかを調べるには?
-
[解決済み] Static readonly」対「const」。
-
[解決済み] JavaScriptで日付の書式設定に関するドキュメントはどこにありますか?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングした
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】Redux TypeError: 未定義のプロパティ 'apply' を読み取れない
-
[解決済み】PhantomJS 2.1.1を使用してReactJSアプリケーションをレンダリングできない理由とは?
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント
-
[解決済み】 \u003C とは何ですか?
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする
-
[解決済み】react router v^4.0.0 Uncaught TypeError: 未定義のプロパティ'location'を読み取れない