两个变量声明之间的区别

Mar*_*n C 0 javascript php

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

var userLogin = "<?php echo $_SESSION['user']['id']; ?>";
if (typeof userLogin == "undefined")
{
    $(location).attr('href', 'http://www.example.com/');
}
Run Code Online (Sandbox Code Playgroud)

但它没有工作,因为如果没有设置会话,那么它分配:

var userLogin = "";
Run Code Online (Sandbox Code Playgroud)

我的问题是:两个变量声明之间有什么区别:

var userLogin = "";
Run Code Online (Sandbox Code Playgroud)

var userLogin;
Run Code Online (Sandbox Code Playgroud)

Dag*_*bit 5

不同之处在于var userLogin赋值为undefinedto userLogin,同时var userLogin = ""指定一个空字符串作为其值.

if (!userLogin)而不是if (typeof userLogin == "undefined").


写表达时

if (x) { ... }
Run Code Online (Sandbox Code Playgroud)

JavaScript会考虑以下xfalse

undefined,null,NaN,0,""(空字符串),并false

x考虑所有其他值true