JavaScript中的“未定义”或“空”变量

时间:2015-10-01 16:07:31

标签: javascript variables null undefined

在尝试学习JavaScript时,我遇到了一些令我感到困惑的代码片段。

我正在搞乱的原始代码是:

var username = prompt("Choose a username:");

if (username === null) {
    alert("Username is required!");
} else {
    console.log("Your username is: " + username);
}

没有工作。所以我来到这里发现了这个问题:How to determine if variable is 'undefined' or 'null'。即使我找到了解决方案,但它提出了更多问题,我无法在“答案”的范围内找到答案。

第一个拥有910个upvotes的解决方案使用typeof,但 不适用于我:

var username = prompt("Choose a username:");

if (typeof username === 'undefined'){
    alert("Username is required!");
} else {
    console.log("Your username is: " + username);
}

它还说明了一个较短的版本, 对我有用:

var username = prompt("Choose a username:");

if (!username){
    alert("Username is required!");
} else {
    console.log("Your username is: " + username);
}

另一个答案引起了我的注意,因为它包含了我的个人代码username === null的一部分,其中包含319个赞成票,但 也不适用于我:

var username = prompt("Choose a username:");

if (username === undefined || username === null) {
    alert("Username is required!");
} else {
    console.log("Your username is: " + username);
}

对答案的编辑还指出仅使用username === null就足够了。

所以我的问题!username使用该特定代码而其他代码没有处理的原因?

3 个答案:

答案 0 :(得分:2)

当系统提示您输入用户名并且不输入任何内容时,存储的值为空字符串''。这等于JavaScript中的值false

typeof(username) == undefined之一无效的原因是因为username变量是在前一行中声明的。正如我上面提到的,即使没有输入任何内容,用户名的类型也是一个字符串。

是的,要检查变量是否未定义,请使用typeof varName === undefined

答案 1 :(得分:0)

如果variableundefined,则在javaScript中

,这意味着它是!= null。 如果一个变量为null,其次为undefined,则==的结果为true,而!=的结果为false

答案 2 :(得分:-1)

尝试:

typeof username === 'undefined'

而不是:

username === undefined

如果您尝试:

typeof username === undefined

也会失败。

Javascript: - )