JavaScript新手,如何进行空检查?

JavaScript新手,如何进行空检查?,javascript,null,Javascript,Null,我正在努力学习JavaScript。第一天!我想把名字和姓氏连在一起。这就是我目前所拥有的。它工作正常,但如果我不输入其中一个字段,它只会显示为null。我如何避免这种情况?在下面的代码中,我将把该条款放在哪里?提前谢谢你的帮助 function ShowFullName() { var varFirstName = Xrm.Page.getAttribute("lauren_firstname").getValue(); var varLastName = Xrm.Page.g

我正在努力学习JavaScript。第一天!我想把名字和姓氏连在一起。这就是我目前所拥有的。它工作正常,但如果我不输入其中一个字段,它只会显示为
null
。我如何避免这种情况?在下面的代码中,我将把该条款放在哪里?提前谢谢你的帮助

function ShowFullName()
{
    var varFirstName = Xrm.Page.getAttribute("lauren_firstname").getValue();
    var varLastName = Xrm.Page.getAttribute("lauren_lastname").getValue();
    Xrm.Page.getAttribute("lauren_name").setValue(varFirstName + " "  + varLastName);
};

您可以检查某些内容是否为null,如:

if (obj == null) { 
  // do this 
}

大概是

if (varFirstName == null) { varFirstname = "";}
这会将firstName设置为空字符串

请尝试以下操作:

function ShowFullName()
    var varFirstName = Xrm.Page.getAttribute("lauren_firstname").getValue();
    var varLastName = Xrm.Page.getAttribute("lauren_lastname").getValue();

    if(varFirstName == null || varFirstName.ToLower() == "null") { 
        varFirstName = "";
    }

    if(varLastName == null || varLastName.ToLower() == "null") { 
        varLastName = "";
    }

    Xrm.Page.getAttribute("lauren_name").setValue(varFirstName + " "  + varLastName);
};

您可以利用以下事实:在JavaScript中。换句话说,每个变量都可以强制(转换)为
true
false

null
是虚假的,包含内容的字符串是真实的。这意味着:

var a = null;
var b = 'hello';

if (a) {
    // does not run
} else {
    // runs
}

if (b) {
    // runs
}
您也可以使用其他类型的表达式,如a或:

在这种情况下,逻辑OR是我们最有趣的选择。使用运算符时,会发生以下情况:

  • 如果左侧计算truthy,则返回该值
  • 否则,返回右侧求值的值
  • 在上面的示例中,
    a
    null
    ,因此它是falsy。表达式返回右侧的值
    b
    。因此,我们可以通过编写
    varFirstName | |“
    ,来利用这种行为,它将返回名字(如果有),或者如果它为null,则右侧会给我们一个空字符串

    function ShowFullName() {
        var varFirstName = Xrm.Page.getAttribute("lauren_firstname").getValue();
        var varLastName = Xrm.Page.getAttribute("lauren_lastname").getValue();
    
        Xrm.Page.getAttribute("lauren_name").setValue(((varFirstName || '') + " " + (varLastName || '')).trim());
    }
    

    我添加了一个调用,以从结果中删除额外的空格。

    学习JScript(或任何内容)的一部分是学习使用文档。当然,欢迎您在这里提问,但请注意,您需要展示研究成果。顺便问一下,您使用的是什么库?或者,“JScript”实际上不是一个拼写错误吗?对像我这样的新人有什么建议吗。我被推到了这个世界上,我正在网上阅读,并试图尽我所能理解如何使用JavaScript。我需要一个初学者指南。有什么建议吗?我目前正试图在Microsoft Dynamics CRM 2011中使用它。@Lauren:Google“Douglas Crockford”并在YouTube上观看他的演讲。你好,Darren,我在我的两个var声明下面添加了您的建议。我添加了以下内容:if(varFirstName==null){varFirstName=“”;}if(varLastName==null){varLastName=“”;}对不起,我按回车键太快了。我输入了名字Lauren,但它仍然显示为“null”,所以在我的全名框中显示为Lauren null……我做错了什么?它是否返回null(大写字母N)?如果是这样的话,那么它看起来像是一个字符串“Null”被返回,因为Null对象的拼写都是小写的。改为使用:如果(varLastName==null | | varLastName==null){varLastName=“”;},-| |表示“或”您也可以尝试检查未定义的。使用:如果(varLastName未定义){varLastName=”“;}Darren,感谢您的帮助。我采纳了上面杰夫的建议,效果很好,现在我看到你也提出了同样的建议。非常感谢你的帮助,我真的很感激。杰夫!非常感谢你的帮助,我真的很感激。这很有效!对像我这样的新人有什么建议吗。我被推到了这个世界上,我在网上阅读,试图尽我所能去理解。我需要一个初学者指南。有什么建议吗?抱歉@Lauren我对JScript了解不多,只是碰巧我知道Xrm.Page.getAttribute将提供对Xrm.Page.data.entity.attributes.get方法的直接访问。是否确实需要
    .ToLower()
    位?如果它不是
    null
    ,它会在
    .ToLower()之后变成
    null
    ?(我对xrm一无所知,但我知道js…)是的,这是必要的,因为它将返回字符串“Null”。为了让它更安全,这就是为什么我加上
    function ShowFullName() {
        var varFirstName = Xrm.Page.getAttribute("lauren_firstname").getValue();
        var varLastName = Xrm.Page.getAttribute("lauren_lastname").getValue();
    
        Xrm.Page.getAttribute("lauren_name").setValue(((varFirstName || '') + " " + (varLastName || '')).trim());
    }