在尝试学习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
使用该特定代码而其他代码没有处理的原因?
答案 0 :(得分:2)
当系统提示您输入用户名并且不输入任何内容时,存储的值为空字符串''
。这等于JavaScript中的值false
。
typeof(username) == undefined
之一无效的原因是因为username变量是在前一行中声明的。正如我上面提到的,即使没有输入任何内容,用户名的类型也是一个字符串。
是的,要检查变量是否未定义,请使用typeof varName === undefined
。
答案 1 :(得分:0)
variable
为undefined
,则在javaScript中,这意味着它是!= null
。
如果一个变量为null
,其次为undefined
,则==
的结果为true
,而!=
的结果为false
答案 2 :(得分:-1)
尝试:
typeof username === 'undefined'
而不是:
username === undefined
如果您尝试:
typeof username === undefined
也会失败。
Javascript: - )