这个是很古老的问题了.

一直存在争议,有些人认为,很多语言没用 undefined 也活的好好,为啥要 undefined 呢.

那有了 undefined 是否还需要 null 呢 ?

typesciprt 的 guilde 就说了, 只用 undefined 不要用 null, tslist 也可以设置规则不使用 null

听上去好像可以哦,但是开发时很快发现,这个规则并没用带来多大好处,因为你不用还有别人会用,而这个别人也会是你代码的一部分

比如 dom api, document.getElementById('dd') 就返回 null

比如框架 angular 也有一堆的 null

所以强制 2 选 1 基本上是不可行的.

那么我们到底应该什么时候用 undefined 和 null 呢?

我自己写 c# 多,所以我会比较能适应 null, 所以大部分情况下我会使用 null, 而遇到 js 原生的 undefined 就判断一下就好了。

js 有几个常见的地方会 undefined

1. 定义了变量但是暂时还没有复制.

2. 参数没用放

3. 函数没用返回

4. 一些原生 api, 比如 array.find

我的一个基本原则是,绝对不要赋值 undefined.

函数要嘛是 void 要嘛是 return

有 return 就不能是 undefined 了。

javascript null vs undefined的更多相关文章

  1. Javascript null和undefined

    Javascript的数据类型包括数字.字符串.布尔值.null.undefined和对象.其中null和undefined是两种特殊的原始类型,很容易混淆.今天就来剖析一下null和undefine ...

  2. JavaScript null 和 undefined

    null null 表示一个变量被声明了,并被赋值为空 var lzh = null; console.log(lzh); // null console.log(typeof lzh); // ob ...

  3. JavaScript null和undefined的区别

    前言 1995年javascript诞生时,最初像Java一样,只设置了null作为表示"无"的值.根据C语言的传统,null被设计成可以自动转为0 但是,javascript的设 ...

  4. JavaScript null and undefined

    http://stackoverflow.com/questions/6429225/javascript-null-or-undefined var x; x == null // true x = ...

  5. 【阿里李战】解剖JavaScript中的 null 和 undefined

    在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理.于是,细想之后,写下本文,请各位 ...

  6. 细说Javascript之null、undefined和NaN

    首先简单介绍一下Javascript中的数据类型,Javascript中的数据类型有undefined,boolen,number,string和object等5种,前4种是原始类型,第5种是引用类型 ...

  7. 【温故而知新-Javascript】比较 undefined 和 null 值

    JavaScript 中有两个特数值: undefined和null,在比较它们的时候需要留心.在读取未赋值的变量或试图读取对象没有的属性时得到的就是 undefined 值. <!DOCTYP ...

  8. Javascript 中的false、0、null、undefined和空字符串对象

    在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象——false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来 ...

  9. 区别Javascript中的Null与Undefined

    在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undef ...

随机推荐

  1. vue+cesiumjs环境搭建【import引入】

    之前写了一遍博客关于vue+cesium的搭建,后面是在index.html里通过script引入的,但是后面要用到指南针的时候发现指南针没法引入了 之前的链接:  https://www.cnblo ...

  2. java实现http协议发送和接收数据

    public void sendMessage() throws Exception { System.out.println("调用servlet开始=================&q ...

  3. 记录 SpringBoot 踩坑经历

    1.spring-boot-starter-web 作用 <dependency> <groupId>org.springframework.boot</groupId& ...

  4. 【leetcode】757. Set Intersection Size At Least Two

    题目如下: 解题思路:贪心算法.首先把intervals按第二个元素从小到大排序,然后遍历intervals,如果集合S和intervals[i]没有交集,那么把intervals[i]的最大值和次大 ...

  5. SCP-bzoj-1019

    项目编号:bzoj-1019 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 对于一个hanoi,知道了各种移动操作的优先级,也就确定了方案.可以证明对于盘子数为N的hanoi,任意移动方案都 ...

  6. taomcat中catalina.out文件

    项目中发现在linux环境下布署的tomcat所占用的磁盘空间越来越大,是catalina.out 文件,每天几乎是2个G,发现可能会影响到tomcat服务(没确定)正常访问.文件这么大,其实已经无法 ...

  7. scrapy入门实战-爬取代理网站

    入门scrapy. 学习了有这几点 1.如何使用scrapy框架对网站进行爬虫: 2.如何对网页源代码使用xpath进行解析: 3.如何书写spider爬虫文件,对源代码进行解析: 4.学会使用scr ...

  8. 【Vue】---Vue.config常用配置项

    一.前言 Vue-cli3 搭建的项目 相比较Vue-cli2界面相对较为简洁,之前的build和config文件夹不见了,那么应该如何配置 如webpack等的配呢? 二.基本配置 只需要在项目的根 ...

  9. submlie 配置php运行

    选择 "工具" -- "编译系统" -- "新编译系统"(英文版对应为 "Tools" -- "Build S ...

  10. Django 自定义模型管理器(Manager)及方法

    转载自:https://www.cnblogs.com/sui776265233/p/11571418.html 1.自定义管理器(Manager) 在语句Book.objects.all()中,ob ...