IEにおけるJavaScriptの挙動差
■サンプル
クリックするとIE7、IE6、Operaでは「5」、Firefox、Safari3、NS7.1では「7」と表示されます
■サンプルソース(自由にご利用下さい)
functionをfunctionの中に書くことは可能だが、正式にはif文やwhile文などの文ブロック内で定義することは出来ず、functionの先頭に記述しなければならない。従って、以下のコードは厳密には不正確でありテスト自体も意味をなすものではない。
<head>
<script type="text/javascript">
window.onload = function(){
document.getElementById('2007101901button').onclick = function(){
var bool = true;
var num = 6;
if(bool){
function func(num){
num++;
return num;
}
num = func(num);
}
else{
function func(num){
num--;
return num;
}
num = func(num);
}
document.getElementById('2007101901num').value = num;
}
}
</script>
</head>
<body>
<form>
<input type="button" value="click" id="2007101901button" />
<input type="text" size="2" id="2007101901num" />
</form>
</body>
■実行結果
- Firefoxでは7と表示される
- IE7では5と表示される
■対処法
以下のように関数リテラルを使用する。
var func = function(num){
num--;
return num;
}
TrackBack URL :
Comments (0)