在JavaScript中,有两个基本上说'我不存在'的值 - undefined和null.
程序员未分配任何内容undefined的属性将是,但为了使属性成为必需null,null必须明确分配给它.
我曾经认为需要null因为undefined原始价值和null对象.它不是,即使typeof null会产生'object':实际上,两者都是原始值 - 这意味着既不能undefined也不null能从构造函数返回,因为它们都将被转换为空对象(必须抛出错误来宣告构造函数中的失败).
它们也都false在布尔上下文中进行求值.唯一真正的区别我能想到的是,一个计算结果为NaN,其他0的数字环境.
那么为什么会出现这两种情况undefined,null如果这只会让那些null在试图找出属性是否已经设置时错误检查的程序员感到困惑?
我想知道的是,如果有人有一个合理的例子,那就是必须使用null而不是用来表示undefined.
因此,普遍的共识似乎undefined是"没有这样的财产",而null意味着"财产确实存在,但没有价值".
我可以忍受,如果JavaScript实现实际上会强制执行此行为 - 但它undefined是一个完全有效的原始值,因此可以很容易地将其分配给现有属性以破坏此合同.因此,如果要确定属性是否存在,则必须使用in运算符或hasOwnProperty()任何方式.再一次:对于undefined和的单独值的实际用途是null什么?
我实际上undefined在我想要取消设置不再使用但我不想要的属性值时使用delete.我应该用null吗?
我有一个我写的功能,基本上看起来像这样:
function getNextCard(searchTerms) {
// Setup Some Variables
// Do a bunch of logic to pick the next card based on termed passed through what I'll call here as 'searchTerms' all of this logic is omitted because it's not important for my question.
// ...
// If we find a next card to give, than give it
if (nextCardFound)
return nextCardFound;
// Otherwise - I'm returning undefined
return undefined;
}
Run Code Online (Sandbox Code Playgroud)
问题:在这里返回"null"会更好吗?
我可以通过我想要的任何东西 - 显然......我只是不确定什么是最好用的东西.
调用此函数的代码知道如何处理未定义的(除非出现可怕的错误,否则实际上不会真正发生)
我问这个问题的原因是我听到某些地方听起来像"不要将未定义的变量分配给变量"或其他东西 - 它会使调试变得更难.所以,我可以看到null传回来的事实告诉我返回工作 …
我已经看到了声明变量并设置为undefined和null的不同代码示例.如:
var a; // undefined - unintentional value, object of type 'undefined'
var b = null; // null - deliberate non-value, object of type 'object'
Run Code Online (Sandbox Code Playgroud)
如果遵循这些声明的代码为a或b赋值,那么使用一种声明而不是另一种声明的原因是什么?
我在内存利用率对我们非常重要的领域工作,因为我们不在您的经典 Web 浏览器/硬件上运行。
我们在应用程序中经常使用 null,我不清楚的一件事是 null 是否比将变量分配给 undefined 占用更多空间。
我们是否知道其中一个在内存使用方面的成本更高?
感谢帮助!
有什么区别
var myvar;
Run Code Online (Sandbox Code Playgroud)
和
var myvar = null;
Run Code Online (Sandbox Code Playgroud)
?
我刚刚在专业代码中看到了下一个,并想知道这是什么......