Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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/php/266.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 两个变量声明之间的差异_Javascript_Php - Fatal编程技术网

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

我使用一个简单的代码来检查会话变量是否未设置,然后使用javascript将页面重定向到另一个页面。我的代码是:

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) { ... }