null
声明变量并且赋值为null;
判断方法:
如果typeof 判断,则返回object, 因为在 JS 的最初版本中,使用的是32位系统,为了性能考虑使用低位存储了变量的类型信息,000 开头代表是对象,然而 null 表示为全零,所以将它错误的判断为 object 。
如果用Object.prototype.toString.call(变量),则会返回'[object Null]';
undefined
变量如果声明了没有赋值,或者后期去声明了没有赋值,就去去使用了这个变量,根据不同的声明方式就会出现不同的返回结果
情况一:
如果是var声明(由于var的显式变量提升),就会返回undefined;
情况二:
如果是let声明,前期声明了但是没有赋值,就会返回undefined;
补充:如果后期才声明,但是没有赋值,不会返回undefined,因为这个时候出现tzd暂时性死区;
情况三:
如果用const声明,是必须赋值的,可以赋值任何,如果只声明不赋值,就会报错Missing initializer in const declaration (译:缺少初始值设定项),如果赋值的是undefined,并且是在声明后使用,就会返回undefined,生命前使用也会出现tzd暂时性死区;
判断方法:
如果是typeof 判断,则会返回undefined,如果用Object.prototype.toString.call(变量),则会返回'[object Undefined]';
null和undefined
于 2022-09-24 15:47:46 首次发布