【问题标题】:check JavaScript variable null or not?检查 JavaScript 变量是否为空?
【发布时间】:2014-06-17 13:36:58
【问题描述】:

我正在使用以下代码行来检查 JS 变量 'userName' 是否为空。 但我总是收到alert "not empty"

请查看我的onready 方法:

$("document").ready(function (){
    var userName = "";
    if (userName == undefined || userName == null) {
        alert('empty');
    } else {
        alert('not empty');
        var div = document.getElementById('title b');
        div.innerHTML = div.innerHTML + ','; 
    }
});

【问题讨论】:

标签: javascript html null var


【解决方案1】:

您需要typeof 关键字来检查它的类型。 !userName 会处理剩下的事情,比如 null 或空值。

if ( typeof userName === 'undefined' || !userName ) {
    alert('empty');
}

【讨论】:

  • 这里不需要使用===,因为typeof的返回总是一个字符串,在这种情况下==更快;)
  • @Beterraba:如果使用非严格的等式,一些 js linter 往往会大喊大叫。所以这对我来说是一种习惯。但总的来说你是对的:)
  • 实际上,你能解释一下类型检查的意义吗,因为!undefined 是真的吗?
  • 我把它放在那里是为了更正原始代码块。逻辑上它没有用,因为userName 被初始化为空字符串,因此不是未定义的。但我们永远不知道幕后发生了什么。
【解决方案2】:

您将 var userName 设置为 ""。它永远不会null

将您的变量声明为var userName;,而不是var userName = "";

但是,除非你真的用 userName 做某事,否则 if / else 将毫无意义。

【讨论】:

  • 所以 json 中的 null 等于 'var userName' 而不是 'var userName="" '???
  • JSON 字符串中的null 值将被解析为null,而不是空字符串。
  • 那么我如何在此处检测到“null”(!userName)??
  • 简单:if(userName == null)
【解决方案3】:

不,你的变量既不是未定义的也不是空的。

你可以做的是替换这一行

if (userName == undefined || userName == null) {

这条线

if (!userName) {

【讨论】:

  • 如果username === 0,则该检查将通过。
  • 如果输入是从 html 元素中读取的,它总是一个字符串,对吧?
  • 是的,但这是假设它实际上是从输入元素中读取的。
【解决方案4】:

空字符串不为 null 也不未定义。

您可以使用! 运算符进行检查:

if (!userName) {
   // Do the stuff
}

为了完整性:

!"" == true
!null == true
!undefined == true
!"hi" == false

注意:

!0 == true
!1 == false
!"0" == false
!"1" == false

【讨论】:

  • 如果userName恰好是0!userName将是true!1 -> false。不要只是将用户名转换为这样的布尔值。
  • @Cerbrus 由于 var 往往是一个字符串,我不认为这是一个数字 0 的问题。但是,是的,我会在答案中公开这一点。谢谢你的提醒。
【解决方案5】:

试试

var userName = "";
    if (userName.length < 1) {
        alert('empty' +"\n"+ userName.length);
    } else {
        alert('not empty');
        var div = document.getElementById('title b');
        div.innerHTML = div.innerHTML + ','; 
    }

【讨论】:

    猜你喜欢
    • 2012-02-05
    • 2011-03-20
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多