壊れたJavaScriptコードによって引き起こされた殺人事件.
899 ワード
このような腐ったコードは書けません.でも、ある以上、問題の原因を見てください.
yuankaiは書いています
これはjavascriptのロード順序が関係していますので、小さい頃からのスコープは外に探しています.
testメソッドではまた局所変数aが宣言されていますので、testメソッドが実行されるときはtestメソッドのスコープ内で変数aを探していますが、aは声明だけでは値が与えられていませんので、alert(a)の時はundefinedです.
なぜ変数bがtrueなのかというと、test実行時にthis.bが見つからなかったので、外部で探しています.グローバル変数b=trueがあるので、alert(b)はtrueです.後の内容は何も言いません.
<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です.後の内容は何も言いません.