当我开始学习时,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,因为稍后会销毁返回的对象。因此,我需要做一个深层复制
由于
答案 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}然后你可以从那里测试长度。