前端系统化学习【JS篇】:(四-4)基本数据类型之null/undefined篇

171 阅读2分钟

前言

  • 细阅此文章大概需要 6分钟\color{red}{6分钟}左右
  • 本篇中详细讲述\color{red}{详细讲述}了:
    1. null/undefined的简述
    2. null/undefined的区别
    3. null/undefined的常见用法
  • 如果有任何问题都可以留言给我,我看到了就会回复,如果我解决不了也可以一起探讨、学习。如果认为有任何错误都还请您不吝赐教,帮我指正,在下万分感谢。希望今后能和大家共同学习、进步。
  • 下一篇会尽快更新,已经写好的文章也会在今后随着理解加深或者加入一些图解而断断续续的进行修改。
  • 如果觉得这篇文章对您有帮助,还请点个赞支持一下,谢谢大家!

null/undefined

null和undefined都代表的是没有

  • null:意料之中(一般是一开始不知道值,我们手动赋值null,后期再给予赋值操作)
    • 一般用null作为初始的空值,因为0不是空值,在栈内存中占有自己的内存空间。(占了位置,资源消耗比null多)
       let num = null;
       //创建一个变量并手动赋了一个初始值null
       num = 12;
    
  • undefined:意料之外,(不是自己定义的,不是自己能决定的)
        let num1;
        //创建了一个变量没有赋值,默认值为undefined
        num1 = 12;
    

  • 说到这里,可能我们已经明白它俩看上去是怎么回事,但是又好像还是模模糊糊的感觉,接下来,我们就再说的细致一些。(参考文献:undefined与null的区别 - 阮一峰的网络日志 www.ruanyifeng.com/blog/2014/0…

null和undefined的区别

  • 虽然null和undefined都是表示"无",但是
    • null是一个表示"无"的对象(所以null又称为空对象指针),转换为数值时为0
          Number(null)
          // 0
          1 + null
          // 1
      
    • undefined是一个表示"无"的原始值,转为数值时为NaN
          Number(undefined)
          // NaN
          1 + undefined
          // NaN
      

null和undefined的常见用法

  • 在现今的使用当中,null和undefined基本是同义的,只有一些理解上的的差别。
  1. ***null表示"没有对象",即该处不应该有值。***常见为:
  1. 作为函数的参数,表示该函数的参数不是对象。 javascript fn=val=>console.log(val); fn(null); 2. 作为对象原型链的终点。 javascript console.log(Object.prototype.__proto__); //null

  1. undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。 常见为:
  1. 变量被声明了,但没有赋值时,就等于undefined。
  2. 定义函数时设置了形参,但是调用函数时没有传递实参,为传递的参数值等于undefined。
  3. 对象没有赋值的属性,该属性的值为undefined。
  4. 函数没有返回值时,默认返回undefined。
 	let a;
     console.log(a); // undefined
 		//
     let fn = function fn(val){
     	console.log(val)
         }
     fn() // undefined
 		//
     let  obj = new Object();
     console.log(obj.a); // undefined
 		//
     let b = fn();
     console.log(b); // undefined
 ```