2013-04-05 43 views
0

我想要一个JS函数来说明是否设置了变量。我在下面定义了isset()。检查是否在javascript中设置了变量

它的行为很奇怪,如评论中所述。有任何想法吗?

<html> 
    <head></head> 
    <body> 
     <script type="text/javascript"> 

      function isset(variableName) { 
      return typeof variableName != 'undefined'; 
      } 

      a = 5; 
      console.log(isset(a)); 
      console.log(isset(b)); // returns an error. 
     </script> 
    </body> 
</html> 
+3

'variableName'与'varname'不一样。为什么要尝试访问未声明的变量? – 2013-04-05 21:45:15

+0

谢谢!现在输出更有意义。 – 2013-04-05 21:46:35

+0

由于您更改了代码,因此它现在应该返回'true',因此也更改了代码注释。 – 2013-04-05 21:47:55

回答

5

您需要直接执行typeof检查,而不是在函数内。

的原因是完全一样的人喜欢在PHP(在您的功能也将打破,除非你使用的传递通过引用):

isset(b)导致异常被抛出,因为b是一个不确定的变量和传球它作为一个参数试图读取它,你不能这样做。所以typef检查从不执行。

+0

但是在我的isset()函数中,是不是有一个值为5的局部变量“a”? – 2013-04-05 21:45:26

相关问题