javascript初始化为undefined或null或“”

时间:2011-05-20 12:52:36

标签: javascript undefined

当我开始学习时,Java脚本有许多虚假的值。我有一个程序从服务获取值并加载到这样的数组中:

function loadNames() {
    Global.names = // what should I use here? undefined, null, "", 0, {} or anything else
    var lnames = getLNames(); // this is doing some magic
        if ( lnames.length !== 0 ) {
            Global.names = new Array();
            for ( var i = 0; i < lnames.length; ++i)
                Global.names[i] = lnames[i];
    }
}

我想知道重置Global.names的正确方法。这里最合适的是什么?在代码中,我只想检查if ( Global.names )

PS:我不能将返回值带入Global.names,因为稍后会销毁返回的对象。因此,我需要做一个深层复制

由于

5 个答案:

答案 0 :(得分:12)

取自JavaScript:好的部分:

“if语句根据表达式的值改变程序的流程。如果表达式是真的,则执行then块。这是伪造的值:

  • 未定义

  • 空字符串''

  • 数字0

  • 号码NaN “

所以基本上如果你将var设置为这些值中的任何一个,你就可以做一个if(var){...}

答案 1 :(得分:6)

我认为你应该初始化 GLobal.names = []; 而不仅仅是检查Global.names.length != 0。 如果要重置它,只需再次将其设为空数组。

答案 2 :(得分:4)

我认为最好将它初始化为数组并测试为

if ( Global.names.length )

此外,如果您只是在数组中存储字符串,则可以将函数简化为

function loadNames() {
  Global.names = getLNames().concat();
}

答案 3 :(得分:1)

您无需将其初始化为任何内容。你可以这样做:

if (!Global.names) Global.names = [];
// add members to Global.names

这可以是一对一陈述:

Global.names = Global.names : [];

如果您想重置它,那么:

Global.names = [];

delete Global.names;

答案 4 :(得分:0)

将其设置为null是好的,因为您知道该变量存在但尚未赋值。通过这种方式,您可以轻松查看状态 - 如果它是undefined,那么您忘记声明它,如果它已被声明null但它从未被赋值,并且它是{{1}然后你可以从那里测试长度。