为什么null在JavaScript中被认为是一个对象?

正在检查

if ( object == null )
      Do something

if ( !object )
      Do something

?

还有:

null和undefined之间的区别是什么?


当前回答

Null是一个对象。它的类型是null。Undefined不是一个对象;其类型是未定义的。

其他回答

typeof null;      // object
typeof undefined; // undefined

null值表示有意不存在任何对象值。它是JavaScript的基本值之一,在布尔操作中被视为假值。

var x = null;
var y;

X被声明并定义为null

Y声明了,但没有定义。它声明时没有值,所以没有定义。

Z没有被声明,所以如果你试图使用Z,它也是未定义的。

思考“null”的最佳方式是回忆一下类似的概念是如何在数据库中使用的,在数据库中它表示字段包含“根本没有值”。

是的,物品的价值是已知的;它是“被定义的”。已经初始化。 该项的值是:“没有值。”

This is a very useful technique for writing programs that are more-easily debugged. An 'undefined' variable might be the result of a bug ... (how would you know?) ... but if the variable contains the value 'null,' you know that "someone, somewhere in this program, set it to 'null.'" Therefore, I suggest that, when you need to get rid of the value of a variable, don't "delete" ... set it to 'null.' The old value will be orphaned and soon will be garbage-collected; the new value is, "there is no value (now)." In both cases, the variable's state is certain: "it obviously, deliberately, got that way."

(name is undefined)

你:你叫什么名字?(*) JavaScript:名字?名字是什么?我不知道你在说什么。你从来没提过任何名字。你在(客户端)看到其他脚本语言了吗?

name = null;

你:你叫什么名字? JavaScript:我不知道。

简而言之,未定义是指事物没有概念存在;它没有类型,在此范围内从未被引用过;Null是已知对象存在的位置,但不知道值是多少。

需要记住的一件事是,null在概念上与false或""或诸如此类的不一样,即使它们在类型转换后相等,即。

name = false;

你:你叫什么名字? 布尔值为false。

name = '';

你:你叫什么名字? JavaScript:空字符串


*: name在此上下文中的意思是一个从未定义过的变量。它可以是任何未定义的变量,然而,name是几乎任何HTML表单元素的属性。它可以追溯到很久以前,在id之前就设立了。它很有用,因为id必须是唯一的,但名称不必是唯一的。

看看这个:

   <script>
function f(a){
  alert(typeof(a));
  if (a==null) alert('null');
  a?alert(true):alert(false);
}
</script>
                                          //return:
<button onclick="f()">nothing</button>    //undefined    null    false
<button onclick="f(null)">null</button>   //object       null    false
<button onclick="f('')">empty</button>    //string               false
<button onclick="f(0)">zero</button>      //number               false
<button onclick="f(1)">int</button>       //number               true
<button onclick="f('x')">str</button>     //string               true

与未定义相比,null的另一个有趣之处在于它可以递增。 X = undefined x + + Y = null y + + console.log(x) // NaN .log Console.log (y) // 0

这对于为计数器设置默认数值非常有用。你有多少次在声明中把一个变量设为-1 ?