[解決済み] Uncaught TypeError: (中間値)(...)は関数ではありません。
2022-04-13 23:31:13
質問
クロージャ内のjsロジックを1つのjsファイルとして、以下のように書いたら全てうまくいきました。
(function(win){
//main logic here
win.expose1 = ....
win.expose2 = ....
})(window)
が、同じjsファイルでそのクロージャの前にロギング代替関数を挿入しようとすると。
window.Glog = function(msg){
console.log(msg)
}
// this was added before the main closure.
(function(win){
//the former closure that contains the main javascript logic;
})(window)
TypeErrorがあると文句を言われる。
Uncaught TypeError: (intermediate value)(...) is not a function
何がいけなかったのか?
どうすればいいですか?
3行目のセミコロンが抜けていることがエラーの原因です。
window.Glog = function(msg) {
console.log(msg);
}; // <--- Add this semicolon
(function(win) {
// ...
})(window);
ECMAScriptの仕様には セミコロンの自動挿入のための特定のルール しかし、この場合、次の行から始まる括弧付きの式は、関数呼び出しの引数リストと解釈できるため、セミコロンは自動的に挿入されません。
つまり、このセミコロンがなければ、匿名の
window.Glog
として関数を呼び出していました。
msg
というパラメータがあり、その後に
(window)
で、その後に返されたものを呼び出そうとした。
このように、コードが解釈されていたのです。
window.Glog = function(msg) {
console.log(msg);
}(function(win) {
// ...
})(window);
関連
-
[解決済み】最大呼び出しスタックサイズ超過エラー
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] URLを新しいタブで開く(新しいウィンドウではない)
-
[解決済み] 配列を値でコピーする
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
Vue+ElementUIによる大規模なフォームの処理例
-
vue ディレクティブ v-html と v-text
-
vueが定義するプライベートフィルタと基本的な使い方
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?
-
[解決済み] TypeError: console.log(...) は関数ではありません。
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ
-
jq は html ページとデータを動的に分割する。