console.log(!status) 在全局范围内产生意外结果
console.log(!status) in global scope producing unexpected result
运行 变成一个有趣的问题。我正在尝试切换分配给变量的布尔值。它没有用,最终我尝试了这段代码。
var status = false;
console.log(!status);
我希望它在控制台中提供 true
,但我却得到了 false
。我认为 javascript 会 运行 括号内的代码首先找到它的值,然后 console.log 该值。你能解释一下为什么我在控制台中没有得到 true
值吗?
var statu = false;
console.log(!statu);
window.status 已经存在。所以你不能使用状态变量。
window.status已经存在(它被用来get/set浏览器状态栏的文本)并且当给它赋值时,它被转换成一个字符串。如果您执行 console.log( status );
,您将看到 status
具有字符串值 "false"
,这会导致您看到输出 false
,因为您实际上拥有 !"false"
和"false"
是 JavaScript 中的真值。
如果你在一个函数中做同样的事情,你会得到预期的输出:
(function ( ) {
var status = false;
console.log(!status); // true
})();
(function ( ) {
var status = false;
console.log(!status);
})();
这将为您提供预期的输出。
"status" 是 依赖于实现的 JavaScript 对象、方法或属性的预定义名称。最好避免将标识符作为 JavaScript 变量的名称。如果你在函数外使用它,那么这意味着你想通过状态值实现任何其他东西。
请参阅下面的屏幕截图,其中显示状态是 window 中的 属性。
所以这里直接引用了window.status。
不建议重复使用某些具有默认含义的变量和属性(提醒关于关键字糟糕的语言)
像这样检查 status
的类型:
typeof status
输出将是:"string"
。
注意 false
和 "false"
不一样。
当你定义:
var status = false; //which is actually "false"
这就是为什么你没有得到 true
。
运行 变成一个有趣的问题。我正在尝试切换分配给变量的布尔值。它没有用,最终我尝试了这段代码。
var status = false;
console.log(!status);
我希望它在控制台中提供 true
,但我却得到了 false
。我认为 javascript 会 运行 括号内的代码首先找到它的值,然后 console.log 该值。你能解释一下为什么我在控制台中没有得到 true
值吗?
var statu = false;
console.log(!statu);
window.status 已经存在。所以你不能使用状态变量。
window.status已经存在(它被用来get/set浏览器状态栏的文本)并且当给它赋值时,它被转换成一个字符串。如果您执行 console.log( status );
,您将看到 status
具有字符串值 "false"
,这会导致您看到输出 false
,因为您实际上拥有 !"false"
和"false"
是 JavaScript 中的真值。
如果你在一个函数中做同样的事情,你会得到预期的输出:
(function ( ) {
var status = false;
console.log(!status); // true
})();
(function ( ) {
var status = false;
console.log(!status);
})();
这将为您提供预期的输出。
"status" 是 依赖于实现的 JavaScript 对象、方法或属性的预定义名称。最好避免将标识符作为 JavaScript 变量的名称。如果你在函数外使用它,那么这意味着你想通过状态值实现任何其他东西。
请参阅下面的屏幕截图,其中显示状态是 window 中的 属性。 所以这里直接引用了window.status。 不建议重复使用某些具有默认含义的变量和属性(提醒关于关键字糟糕的语言)
像这样检查 status
的类型:
typeof status
输出将是:"string"
。
注意 false
和 "false"
不一样。
当你定义:
var status = false; //which is actually "false"
这就是为什么你没有得到 true
。