Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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 在if条件中附加一个布尔值怎么样?_Javascript - Fatal编程技术网

Javascript 在if条件中附加一个布尔值怎么样?

Javascript 在if条件中附加一个布尔值怎么样?,javascript,Javascript,我发现了以下javascript代码: function testScope(){ var myTest = true; if(true){ var myTest = "I am changed!" } } testScope(); // will alert "I am changed!" 我真的很困惑,布尔值是附加在if条件中的,而不是if(myTest),因此我认为这可能是错误的,但当在if条件if(false)中更改为false时,它会发出tru

我发现了以下javascript代码:

function testScope(){
    var myTest = true;
    if(true){
        var myTest = "I am changed!"
    }
}
testScope(); // will alert "I am changed!"

我真的很困惑,布尔值是附加在if条件中的,而不是
if(myTest)
,因此我认为这可能是错误的,但当在if条件
if(false)
中更改为false时,它会发出true警报。我以前从未见过这种情况。

您只区分全局范围和函数范围。 如果条件和循环没有自己的作用域,那么当if语句中的条件为true时,函数作用域变量myTest将被覆盖(因为它在同一作用域中被重新定义)

if(true)
应始终为true,因为它不是变量

布尔对象:

布尔对象表示两个值:
true
false

如果布尔对象没有初始值,或者如果传递的值是以下值之一:

0
-0
null
""
false
undefined
NaN
对象被设置为false。对于任何其他值,它都设置为true(即使使用字符串“false”)

if(true)计算为true的原因是它是条件语句的“结果”

var x = 1;
var y = 2;
if (x < y) { ... }

因此,您可以将其归结为静态条件,因为不存在变量条件。

您关注的是代码片段的错误部分:它没有尝试演示
if(true)
语句。它试图展示javascript如何处理变量声明

function testScope(){
    var myTest = true;                 // <- variable declared at function level
    if(true){
        var myTest = "I am changed!"   // <- variable declared at 'if' block level
    }
}
testScope(); // will alert "I am changed!"
函数testScope(){

var myTest=true;//变量名是相同的。var myTest=true;var myTest=“我被改变了!”那么,您在这里面临的问题是什么?请参阅问题标题,即我需要更多的说明。当没有
alert()
语句时,它将如何发出警报?我不理解您的问题,
if(true)
将始终正确,因为这不是一个变量。不客气。有时很容易在示例的错误部分卡住,您只需要快速解释:)
function testScope(){
    var myTest = true;                 // <- variable declared at function level
    if(true){
        var myTest = "I am changed!"   // <- variable declared at 'if' block level
    }
}
testScope(); // will alert "I am changed!"