JavaScript初始化为未定义或为空或“
Java脚本在开始学习时有许多错误值。我有一个程序,会从一个服务和负载值到一个这样的数组:JavaScript初始化为未定义或为空或“
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中,因为返回的对象稍后会被销毁。因此,我需要做一个深拷贝
感谢
从JavaScript摘自:好的部分:。
“if语句改变基于所述表达式的值的程序的流程如果表达式是truthy时,执行然后块下面是falsy值:
假
空
不确定
空字符串 ''
数0
数为NaN “
所以基本上,如果你设置你的VAR任何这些值,你”将能够做一个if(var){...}
将其设置为null
是好的,因为你知道,该变量存在,但尚未分配的值。通过这种方式,您可以轻松看到状态 - 如果是undefined
,那么您已经忘记声明它,如果它已被声明但从未分配过值,并且如果是Array
,则可以从那里测试长度。
您不必将其初始化为任何内容。你可以这样做:
if (!Global.names) Global.names = [];
// add members to Global.names
这可能是一个在一个声明:
Global.names = Global.names : [];
如果你想将其复位,则:
Global.names = [];
或
delete Global.names;
虽然这是一个用三元语句初始化一个变量的好例子,但我不认为它完全回答了OP的问题,因为他明确地试图清除'Global.names'的值,而你的代码不会改变它的值。 – 2011-05-20 13:00:51
我认为你应该初始化 GLobal.names = [];
而不仅仅是检查是否Global.names.length != 0
。 如果您想重置它,只需再次将其设置为空阵列即可。
我想你会更好,把它作为初始化数组和测试作为
if (Global.names.length)
此外,如果你只是存储在阵列中的字符串可以简化功能
function loadNames() {
Global.names = getLNames().concat();
}
这是不正确的。如果该值为'null',那么它已被赋值('null'值)。如果你不分配任何东西,它将会是'undefined'。该语言不会隐含地分配给“null”。 – fearofawhackplanet 2011-05-20 12:59:59
其实是的,你是对的 - 我真正的意思是它被赋予了一个'falsy'值,这个值不会被后面的'']等有效值所迷惑。 – 2011-05-20 13:02:58
是的我同意你的方法 – fearofawhackplanet 2011-05-20 13:07:03