Javascript 两个变量声明之间的差异
我使用一个简单的代码来检查会话变量是否未设置,然后使用javascript将页面重定向到另一个页面。我的代码是:Javascript 两个变量声明之间的差异,javascript,php,Javascript,Php,我使用一个简单的代码来检查会话变量是否未设置,然后使用javascript将页面重定向到另一个页面。我的代码是: var userLogin = "<?php echo $_SESSION['user']['id']; ?>"; if (typeof userLogin == "undefined") { $(location).attr('href', 'http://www.example.com/'); } 我的问题是: 两种变量声明之间的区别是什么: var use
var userLogin = "<?php echo $_SESSION['user']['id']; ?>";
if (typeof userLogin == "undefined")
{
$(location).attr('href', 'http://www.example.com/');
}
我的问题是:
两种变量声明之间的区别是什么:
var userLogin = "";
及
不同之处在于
var userLogin
为userLogin
分配一个undefined
值,而var userLogin=“”
分配一个空字符串作为其值
使用if(!userLogin)
而不是if(typeof userLogin==“undefined”)
写表达式时
if (x) { ... }
JavaScript认为以下x
值为false
未定义
,空
,NaN
,0
,”
(空字符串)和假
将
x
的所有其他值视为true
不同之处在于var-userLogin
将未定义的值分配给userLogin
,而var-userLogin=”“
将空字符串分配为其值
使用if(!userLogin)
而不是if(typeof userLogin==“undefined”)
写表达式时
if (x) { ... }
JavaScript认为以下x
值为false
未定义
,空
,NaN
,0
,”
(空字符串)和假
将x
的所有其他值视为true
第一个是为userLogin分配一个空字符串。第二个没有定义……为什么不直接用PHP重定向呢?这是对@MartyWallace的补充。为什么不在php中使用,然后在php中重定向呢?我认为这是因为此时已经发送了头文件,但是如果可以在这个特定的情况下更早地完成,那么这肯定是一种方法。第一种方法是为userLogin分配一个空字符串。第二个没有定义……为什么不直接用PHP重定向呢?这是对@MartyWallace的补充。为什么不在php中使用,然后在php中重定向呢?我想这是因为此时已经发送了头文件,但是如果可以在这个特定的情况下更早地完成,那么这肯定是一种方法。完美的简短回答+1+1做得很好。你可能想提到JavaScript认为哪些值是假的,我想了想,但决定我甚至不想打开那罐蠕虫。例如,“00.00”
值得一提吗?那么[0]
呢?@DaggNabbit,它实际上非常简单。我为你做了一个编辑:)@maček我觉得没那么简单。。。空数组、包含单个false元素的数组、字符串(如“0”
)等)都是false。甚至它们的盒装版本,如newstring()
,都是错误的。而且,NaN
既不真实也不虚假。公平地说,您列出的所有值(NaN除外)都是错误的,但说所有其他值都是真实的并不十分准确。完美的简短回答+1+1干得好。你可能想提到JavaScript认为哪些值是假的,我想了想,但决定我甚至不想打开那罐蠕虫。例如,“00.00”
值得一提吗?那么[0]
呢?@DaggNabbit,它实际上非常简单。我为你做了一个编辑:)@maček我觉得没那么简单。。。空数组、包含单个false元素的数组、字符串(如“0”
)等)都是false。甚至它们的盒装版本,如newstring()
,都是错误的。而且,NaN
既不真实也不虚假。公平地说,您列出的所有值(NaN除外)都是错误的,但说所有其他值都是真实的并不十分准确。
if (x) { ... }