我很好地理解了undefined和null之間的區別,以及JavaScript將布爾轉換爲任何東西的事實,特別是null轉爲false。JavaScript奇怪的空行爲
我的問題是這樣的:爲什麼在FF 9和IE 9中觸發第二個警報? (這是一個基於更復雜的腳本的小測試腳本,它只是爲了說明問題...)
我期待着。運算符優先,表達式返回null,然後將其轉換爲布爾值false。添加括號!(context.isNull)並沒有什麼區別。
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test</title>
</head>
<body>
<script type="text/javascript">
var context = this;
var isNull = null;
var aFunc = function() {
alert(context.isNull);
if (!context.isNull) {
alert("Is !context.isNull really true?");
}
};
aFunc();
</script>
</body>
</html>
'.isNull'來自哪裏? – 0x499602D2 2012-01-27 23:22:42
@David'var isNull = null;' – 2012-01-27 23:24:10
@David:在全局作用域中,var變量被賦值爲「全局對象」(本例中爲'window')的屬性。所以'var context = this'相當於'window.context = window','var isNull = null'相當於'window.isNull = null'。 – ruakh 2012-01-27 23:26:29