为什么NULL是一个对象,空和未定义之间有什么区别?

为什么NULL是一个对象,空和未定义之间有什么区别?

为什么null被认为是object用JavaScript?

正在检查

if ( object == null )
      Do something

if ( !object )
      Do something

?

此外:

.之间的区别是什么?nullundefined?


收到一只叮咚
浏览 1143回答 3
3回答

绝地无双

这种差异可以归纳为以下片段:alert(typeof(null));      // objectalert(typeof(undefined)); // undefinedalert(null !== undefined) //truealert(null == undefined)  //true检查object == null是不同的检查if ( !object ).后者等于! Boolean(object),因为一元!运算符自动将右操作数转换为布尔值。自Boolean(null)等于假!false === true.所以如果你的对象是非空, 但 假的或0或"",该支票将通过,因为:alert(Boolean(null)) //falsealert(Boolean(0))    //falsealert(Boolean(""))   //false

30秒到达战场

null是不是物体,这是一个原始值..例如,不能向其添加属性。有时人们错误地认为它是一个物体,因为typeof null回报"object"..但这实际上是一个bug(甚至可以在ECMAScript 6中修复)。.之间的区别null和undefined如下:undefined*由JavaScript使用,意思是“无值”。未初始化变量、缺少参数和未知变量都有此值。> var noValueYet;> console.log(noValueYet);undefined> function foo(x) { console.log(x) }> foo()undefined> var obj = {}; > console.log(obj.unknownProperty)undefined但是,访问未知变量会产生异常:> unknownVariableReferenceError: unknownVariable is not definednull*程序员用来表示“无值”,例如作为函数的参数。检查变量:console.log(typeof unknownVariable === "undefined"); // truevar foo;console.log(typeof foo === "undefined");  // trueconsole.log(foo === undefined); // truevar bar = null;console.log(bar === null); // true作为一般规则,您应该始终在JavaScript中使用=和从不=(=执行)各种转换会产生意想不到的结果)。支票x == null是一种边缘情况,因为它对两种情况都适用。null和undefined:> null == nulltrue> undefined == nulltrue检查变量是否有值的一种常见方法是将其转换为布尔值,并查看它是否为布尔值。true..该转换由if语句和布尔运算符!(“不”)。function foo(param) {     if (param) {         // ...     }}function foo(param) {     if (! param) param = "abc";}function foo(param) {     // || returns first operand that can't be converted to false     param = param || "abc";}此方法的缺点:以下所有值计算为false,所以您必须小心(例如,上面的检查不能区分undefined和0).undefined, null布尔人:false数字:+0, -0, NaN字符串:""可以通过以下方法测试到布尔值的转换:Boolean作为一个函数(通常它是一个构造函数,用于new):> Boolean(null)false> Boolean("")false> Boolean(3-3)false> Boolean({})true> Boolean([])true
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript