壊れたJavaScriptコードによって引き起こされた殺人事件.

899 ワード

このような腐ったコードは書けません.でも、ある以上、問題の原因を見てください.
 
<html>   
<head>   
<script type="text/javascript">   
var a=100;   
var b=true;   
function test(){   
    alert(a);   
    alert(b);   
    b=false;   
    alert(b);   
    var a=200;   
    alert(a/2);   
    alert(++Math.PI);   
    alert(Math.PI++);   
}   
</script>   
</head>   
  
<body onload="test()">   
</body>   
<html> 
 
 
yuankaiは書いています
これはjavascriptのロード順序が関係していますので、小さい頃からのスコープは外に探しています.
testメソッドではまた局所変数aが宣言されていますので、testメソッドが実行されるときはtestメソッドのスコープ内で変数aを探していますが、aは声明だけでは値が与えられていませんので、alert(a)の時はundefinedです.
なぜ変数bがtrueなのかというと、test実行時にthis.bが見つからなかったので、外部で探しています.グローバル変数b=trueがあるので、alert(b)はtrueです.後の内容は何も言いません.