У меня есть хорошее понимание разницы между неопределенным и нулевым и тот факт, что JavaScript отбрасывает практически что-либо в логическом, в частности, от null до false.JavaScript странное поведение null
Мой вопрос: почему второе предупреждение срабатывает как в 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
@David 'var isNull = null;' –
@David: В глобальной области действия переменные 'var''d назначаются как свойства для« глобального объекта »(в этом случае« окно »); поэтому 'var context = this' эквивалентен' window.context = window', а 'var isNull = null' -' window.isNull = null'. – ruakh