勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

IEでjavascript関数の初期値

   

あるJavaScriptの関数でchromeやfirefoxは正常に動いたけどIE11のみ動かないという現象が発生した。F12キーで開発者ツールからコンソールを確認しましたところ「')'がありません」との表示がされ、さらにその関数を動かすと「'関数名'は定義されていません。」と表示された。

 

症状

aタグリンクからonclickでtest_func関数を動かしたとする。ソースとしては以下のようなもの。

これをchromeやfirefoxではaタグを叩くと「1」のアラートが表示されるが、IE11では何も動作しなかった。コンソールを追うとページを開いた時点で「')'がありません」と表示、aタグを叩くと「test_funcは定義されていません。」と表示された。

 

原因

明確な原因は正直分からなかったんだけど、関数の初期値(デフォルト引数)がひっかかっているっぽい。初期値を設定せず、またonclickで関数を叩く際に引数をきちんと渡すと正常に動いた。以下のような形。

 

その他

JavaScriptでデフォルト引数を使うのは遠慮しておいた方が良さそう。使うとしても関数の中で「if(typeof param === 'undefined') param = デフォルト値;」とチェックして代入するような形で使うようにする。

 - javascript

  関連記事

javascript_logo_unofficial-300x300
サイトにHTMLエディタ(WYSIWYG)を導入する方法

シンプルで導入が簡単、且つ日本語化されているウィジウィグを探しており、良さそうな ...

javascript_logo_unofficial-300x300
getElementsByTagName

うろ覚えだけど業務中に、 document.getElementById('aa ...

javascript_logo_unofficial-300x300
javascriptのtry文

javascriptとかjQueryを使ってて、Firefox,chromeはい ...

mzl.qobqfuxq
JavaScriptで住所から経度緯度を取得する

やりたかった事はformに住所を入れてsubmitする際に、javascript ...

javascript_logo_unofficial-300x300
javascriptでのエラーログ

PHPでのエラーログ取りが思いのほか便利だったので JSについても簡単にログ取り ...

javascript_logo_unofficial-300x300
javascriptでメモリ開放

今まで考えたこと無かったけどjavascriptを使う際は メモリ消費に気をつけ ...

images
PHPの配列をファイルに保存してPHPやJSで呼び出す

PHPの配列をファイルとして保存し、別のページからPHPやJavaScriptで ...

javascript_logo_unofficial-300x300
ページのリロード、ページの戻る

ブラウザのリロードと同じようなボタンを作成してほしいとの 要望があって色々あった ...

mzl.qobqfuxq
GoogleMapでメインカラーを変更する方法

GoogleMapAPIを用いたMAPでカラー変更をしたかった。カラーコードの指 ...

110126-HTML5_Logo
HTML、javascriptソースの暗号化

サーバーサイドはソースを見られないけどクライアントサイドはソースを見られるので、 ...