javascript null vs undefined
这个是很古老的问题了.
一直存在争议,有些人认为,很多语言没用 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的更多相关文章
- Javascript null和undefined
Javascript的数据类型包括数字.字符串.布尔值.null.undefined和对象.其中null和undefined是两种特殊的原始类型,很容易混淆.今天就来剖析一下null和undefine ...
- JavaScript null 和 undefined
null null 表示一个变量被声明了,并被赋值为空 var lzh = null; console.log(lzh); // null console.log(typeof lzh); // ob ...
- JavaScript null和undefined的区别
前言 1995年javascript诞生时,最初像Java一样,只设置了null作为表示"无"的值.根据C语言的传统,null被设计成可以自动转为0 但是,javascript的设 ...
- JavaScript null and undefined
http://stackoverflow.com/questions/6429225/javascript-null-or-undefined var x; x == null // true x = ...
- 【阿里李战】解剖JavaScript中的 null 和 undefined
在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理.于是,细想之后,写下本文,请各位 ...
- 细说Javascript之null、undefined和NaN
首先简单介绍一下Javascript中的数据类型,Javascript中的数据类型有undefined,boolen,number,string和object等5种,前4种是原始类型,第5种是引用类型 ...
- 【温故而知新-Javascript】比较 undefined 和 null 值
JavaScript 中有两个特数值: undefined和null,在比较它们的时候需要留心.在读取未赋值的变量或试图读取对象没有的属性时得到的就是 undefined 值. <!DOCTYP ...
- Javascript 中的false、0、null、undefined和空字符串对象
在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象——false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来 ...
- 区别Javascript中的Null与Undefined
在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undef ...
随机推荐
- spring+websocket的整合实例--可使用
spring+websocket的整合实例----借鉴如下链接--此贴用于笔记 https://blog.csdn.net/qq_35515521/article/details/78610847
- Android中通过进程注入技术修改广播接收器的优先级
前言 这个周末又没有吊事,在家研究了如何通过进程的注入技术修改广播接收器的优先级,关于这个应用场景是很多的,而且也很重要,所以就很急的去fixed了. Android中的四大组件中有一个广播:Broa ...
- php多张图片打包下载
<?php /** * 图片打包下载 */ namespace app\common\extend; class Imagedown { var $datasec = array (); var ...
- BZOJ 4555(第二类斯特林数+NTT)
传送门 解题思路 数学题,推式子.求\(f(n)=\sum\limits_{i=0}^n\sum\limits_{j=0}^iS(i,j)2^jj!\) 首先可以把\(j\)往前提: \[f(n)=\ ...
- HTML5: HTML5 Canvas
ylbtech-HTML5: HTML5 Canvas 1.返回顶部 1. HTML5 Canvas <canvas> 标签定义图形,比如图表和其他图像,您必须使用脚本来绘制图形. 在画布 ...
- main()和代码块
main方法 * main()方法的使用说明 * main方法是程序的主入口(一个主程序 先从main开始进行执行) * * * main方法也可以是一个普通的静态方法 代码块 代码块也是类的成员变量 ...
- laravel定义全局变量
laravel中config()函数可以获取 bootstrap/cache/config.php中的内容,而config文件夹下的所有配置文件夹中的内容可以通过 php artisan confi ...
- 【狼】狼的unity3d脚本学习
记录学习中的问题,时刻更新 unity获取鼠标所在位置 BOOL GetCursorPos( LPPOINT lpPoint); 获取鼠标所在位置,不过原点在左下角 ///////////// ...
- JVM运行时数据区及对象在内存中初始化的过程
JVM运行时数据区 Java虚拟机所管理的内存区域,也称为运行时数据区,分为以下几个运行时数据区,如图所示 程序计数器:当前程序所执行字节码的行号指示器 程序计数器(Program Counter R ...
- Python List列表的操作说明
Python中List的N种操作,其简单程度令人叹为观止... C:\Users\rhys>python Python 2.7.14 (v2.7.14:84471935ed, Sep 16 20 ...