JavaScript的null和undefined区别示例介绍


Posted in Javascript onSeptember 15, 2014

先说说undefined:

Javascript中的变量是弱类型的, 所以声明变量的时候只需使用var关键字即可。如果是像C这样的强类型语言, 声明变量的时候如果没有指定初始值,那么会给他一个默认值,比如int变量的默认值是0。但是在Javascript这样的弱类型语言中,没有办法确定到底该给这样的变量一个什么样的默认值,比如我声明一个变量

var v1;

是给他false还是0,或者是'' ?

因为没有类型,所以无法确定。 在Javascript中对于这种生命后没有给定初始值的变量,就给他一个undefined。不过前提是这个变量必须已经声明,如果对于没有声明过的标识符,就会出错。看看下面的代码。

vo="vo";//不使用var关键字创建的是全局变量,如果不赋值会报错,如下
//v1;//会报错
var v2;//undeifned
var v3="";//null
alert(vo);
//alert(v1);//
alert(v2);
alert(v3);

再来说说null:

Javscript有几个基本类型,Number,String,Boolean,Object。对于Object 类型的变量,他有两种情况,一种是他是一个对象的实例,另一种他是一个空引用null,熟悉类似Java这样面向对象语言的朋友应该很容易理解。对于这两种情况,他们的类型都是Object。Javascript中的变量,在给他赋值的时候,才
会确定它的类型,比如下面这样。

代码如下:

var v1 = 1; 
var v2 = true; 

alert(typeof v1); //number 
alert(typeof v2); //boolean 

v2 = new Date(); 
alert(typeof v2); //object 

v2 = "str"; 
alert(typeof v2); //string 

v2 = null; 
alert(typeof v2); //object

可以看到,null在 Javascript中代表一个特殊的Object类型的值,他用来表示空引用的概念,如果要将一个标识符声明称object类型,但是暂时不给他实例,那么就可以将它先初始化为null,以便以后使用。
不一定绝对正确,简单来说,对于所有变量,只要声明后还没有指定初始值 ,那么他就是undefined,如果是Object类型用来表示空引用的概念,那么就是用null来表示。

下面是一些补充:

null :表示无值;
undefined : 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。==运算符将两者看作相等。如果要区分两者,要使用===或typeof运算符。使用if (!object){}两者就都包含了 。

Javascript 相关文章推荐
JavaScript 面向对象之命名空间
May 04 Javascript
jquery ui dialog ie8出现滚动条的解决方法
Dec 06 Javascript
Jquery 在页面加载后执行的几种方式
Mar 14 Javascript
connect中间件session、cookie的使用方法分享
Jun 17 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
Aug 06 Javascript
初步了解javascript面向对象
Nov 09 Javascript
老生常谈Javascript中的原型和this指针
Oct 09 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
jquery实现下拉框左右选择功能
Feb 21 Javascript
CKEditor4配置与开发详细中文说明文档
Oct 08 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
Oct 19 Javascript
javascript防抖函数debounce详解
Jun 11 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 #Javascript
JavaScript的arguments对象应用示例
Sep 15 #Javascript
avascript中的自执行匿名函数应用示例
Sep 15 #Javascript
JavaScript function 的 length 属性使用介绍
Sep 15 #Javascript
css与javascript跨浏览器兼容性总结
Sep 15 #Javascript
一个通过script自定义属性传递配置参数的方法
Sep 15 #Javascript
一个字符串反转函数可实现字符串倒序
Sep 15 #Javascript
You might like
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
php简单分页类实现方法
2015/02/26 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
jquery select选中的一个小问题
2009/10/11 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
js实现磁性吸附的示例
2020/10/26 Javascript
[57:22]完美世界DOTA2联赛PWL S2 FTD vs PXG 第二场 11.27
2020/12/01 DOTA
python人人网登录应用实例
2014/09/26 Python
利用python代码写的12306订票代码
2015/12/20 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
python实现感知器算法(批处理)
2019/01/18 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
python日志模块logbook使用方法
2019/09/19 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
安全资金保障制度
2014/01/23 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
房屋所有权证明
2015/06/19 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript