Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 全局作用域中的console.log(!status)产生意外结果_Javascript_Console.log - Fatal编程技术网

Javascript 全局作用域中的console.log(!status)产生意外结果

Javascript 全局作用域中的console.log(!status)产生意外结果,javascript,console.log,Javascript,Console.log,遇到了一个有趣的问题。我正在尝试切换分配给变量的布尔值。它不起作用,最终我尝试了这个代码 var status = false; console.log(!status); 我希望它在控制台中提供true,但是我得到了false。我认为javascript将首先在括号内运行代码以查找其值,然后在console.log中记录该值。您能解释一下为什么我在控制台中没有得到true值吗? var statu=false; 控制台日志(!statu)已存在(用于获取/设置浏览器状态栏的文本),当为其指定

遇到了一个有趣的问题。我正在尝试切换分配给变量的布尔值。它不起作用,最终我尝试了这个代码

var status = false;
console.log(!status);
我希望它在控制台中提供
true
,但是我得到了
false
。我认为javascript将首先在括号内运行代码以查找其值,然后在console.log中记录该值。您能解释一下为什么我在控制台中没有得到
true
值吗?

var statu=false;
控制台日志(!statu)已存在(用于获取/设置浏览器状态栏的文本),当为其指定值时,它将转换为字符串。如果您执行
console.log(状态)
您将看到
状态
具有字符串值
“false”
,这会导致您看到输出
false
,因为实际上您有
!“false”
“false”
是JavaScript中的真实值

如果在函数中执行相同的操作,您将获得预期的输出:

(function ( ) {
  var status = false;
  console.log(!status); // true
})();
这将为您提供预期的输出


status”是依赖于实现的JavaScript对象、方法或属性的预定义名称。最好避免将标识符作为JavaScript变量的名称。如果您在函数之外使用它,则意味着您希望通过状态值实现任何其他功能。

请参见下面的屏幕截图,其中说明状态是窗口中的属性。 所以这直接指的是window.status。 不建议重用某些具有默认含义的变量和属性(提醒oops语言中的关键字


检查
状态的类型,如下所示:

typeof status
输出将是:
“字符串”

请注意,
false
“false”
是不同的

定义时:

var status = false; //which is actually "false"

这就是为什么你没有得到IE中有趣的
true

的原因,我得到了
true
但是在chrome和firefox中我得到了false是的,我得到了其他变量的true,但是当使用状态窗口时,状态已经存在。我的猜测是存在冲突。无论您为window.status指定了什么值,它都会转换为字符串,因此
!状态
→ <代码>!“假”
→ 是的,但是为什么呢?解释你的答案我已经编辑了我的答案并解释了@StephanBijzitterNo,这不是一个保留字。如果是,你会得到一个语法错误。@Bergi仅供参考:请看。您可以看到保留字列表。@BharatJain是的。它不在保留字列表中。它位于“避免作为JavaScript变量名称的标识符”列表中。
var status = false; //which is actually "false"