JavaScript函数中的If语句不起作用

JavaScript函数中的If语句不起作用,javascript,if-statement,Javascript,If Statement,我有以下功能 var VisibilityNewDevice = 1 function visibilityNewDevice() { if (VisibilityNewDevice === 1) { toggleVisibility('buttonPressesTable'), toggleVisibility('IconMinimize'), toggleVisibility('IconSync'); var

我有以下功能

var VisibilityNewDevice = 1
function visibilityNewDevice() {
    if (VisibilityNewDevice === 1) {
         toggleVisibility('buttonPressesTable'),
         toggleVisibility('IconMinimize'),
         toggleVisibility('IconSync'); 
         var VisibilityNewDevice = 0;
    }
}
如果我调用
visibilityNewDevice()
我将返回
未定义的
,并且不运行代码。但是如果我像这样运行

if (VisibilityNewDevice === 1) {
    toggleVisibility('buttonPressesTable'),
    toggleVisibility('IconMinimize'), 
    toggleVisibility('IconSync'); 
    var VisibilityNewDevice = 0;
}

它很好用。我不明白为什么
函数不起作用,但当我运行
if
语句时,它工作正常。

它不起作用,因为您正在调用
var VisibilityNewDevice=0。特别是
var
。这意味着if语句中的
VisibilityNewDevice
没有引用外部变量,而是引用内部变量,在执行时,
未定义


删除if语句中的
var
应该可以使此工作

它不工作,因为您正在调用
var VisibilityNewDevice=0。特别是
var
。这意味着if语句中的
VisibilityNewDevice
没有引用外部变量,而是引用内部变量,在执行时,
未定义

删除if语句中的
var
应该通过

var VisibilityNewDevice;
var VisibilityNewDevice = 0;
您已经在函数中声明了局部变量VisibilityNewDevice。拥有

var VisibilityNewDevice;
var VisibilityNewDevice = 0;
您正在将本地变量设置为零。不是你需要的外部的。

var VisibilityNewDevice;
var VisibilityNewDevice = 0;
您已经在函数中声明了局部变量VisibilityNewDevice。拥有

var VisibilityNewDevice;
var VisibilityNewDevice = 0;

您正在将本地变量设置为零。不是您需要的外部变量。

您的函数尝试再次定义变量

你的

var VisibilityNewDevice=0

在函数的末尾应该是


VisibilityNewDevice=0

您的函数尝试再次定义变量

你的

var VisibilityNewDevice=0

在函数的末尾应该是

VisibilityNewDevice=0

答案是简单地删除函数中的
var

你写

var VisibilityNewDevice = 1
function visibilityNewDevice() {
  // expecting: 1 === 1
  if (VisibilityNewDevice === 1) {
     ...
     var VisibilityNewDevice = 0;
  }
}
Javascript编译

var VisibilityNewDevice = 1
function visibilityNewDevice() {
    var VisibilityNewDevice = undefined;

    // undefined === 1
    if (VisibilityNewDevice === 1) {
     ... 
     VisibilityNewDevice = 0;
   }
}
请注意,您的
var
被提升到顶部,这适用于在
函数中创建的任何
var
。当程序进入
功能时,挂起的
var
将覆盖具有相同名称的任何全局
var

另见:

最后,当您创建private
var
时,将其提升到您自己的位置并不是一个坏主意,这样您就可以更好地遵循您的代码

function () {
    var a, b, c, d;
}
答案是简单地删除函数中的
var

你写

var VisibilityNewDevice = 1
function visibilityNewDevice() {
  // expecting: 1 === 1
  if (VisibilityNewDevice === 1) {
     ...
     var VisibilityNewDevice = 0;
  }
}
Javascript编译

var VisibilityNewDevice = 1
function visibilityNewDevice() {
    var VisibilityNewDevice = undefined;

    // undefined === 1
    if (VisibilityNewDevice === 1) {
     ... 
     VisibilityNewDevice = 0;
   }
}
请注意,您的
var
被提升到顶部,这适用于在
函数中创建的任何
var
。当程序进入
功能时,挂起的
var
将覆盖具有相同名称的任何全局
var

另见:

最后,当您创建private
var
时,将其提升到您自己的位置并不是一个坏主意,这样您就可以更好地遵循您的代码

function () {
    var a, b, c, d;
}

这就是所谓的变量提升

var x = 1;

function test(){
   console.log(x);
   var x = 3;
}

test();
这和

function test(){
       var x;
       console.log(x);
       x = 3;
    }

这就是所谓的变量提升

var x = 1;

function test(){
   console.log(x);
   var x = 3;
}

test();
这和

function test(){
       var x;
       console.log(x);
       x = 3;
    }

变量提升:始终注意声明的全局变量。变量提升:始终注意声明的全局变量。