文档章节

js基础类型值undefined与null类型

开源中国123456789
 开源中国123456789
发布于 2016/06/09 17:01
字数 555
阅读 22
收藏 0

undefined:  未定义

var message;  //定义了,但是没有赋值

console.log(message);  //undefined

这个未定义不是说一个变量没有var xx的意思,只是说定义了但是没有赋值, 如果压根就没有var xx将会引发异常:

console.log(xx) // xx is not defind

但是undefined和操作符进行操作的时候会是什么样呢:

console.log(undefined+1); //NaN   表示非数值类型 not a number

console.log(undefined+"1"); //undefined1   此时会把undefined当成一个完整的字符串

console.log(true+undefined); //NaN

console.log(null+undefined); //NaN

也就是说undefined与除string类型以外的其他类型进行数学操作都会返回NaN,因为js里的var是根据结果来确认类型的,所以js编译器会认为不知道是一个什么类型与你已知的数进行操作,所以返回是的是一个NaN (not a Number)

 

null: 空

null是object对象,感觉最容易混淆的就是undefined和null,undefined继承于null,所以有的时候一直觉得js这种设计压根就是在增加你的难度,所以如果有这个可能的话真希望这俩合二为一,

console.log(null==undefined); //true

console.log(null===undefined) //false

console.log(typeof null); //object

console.log(typeof undefined);// undefined

但是null在操作的时候基本都用不到,一般是在操作对象的时候会用到null,不过他在进行数学操作的时候是什么样呢?

console.log(null+1)//1

console.log(null*1)//0

console.log(null*"1")//0

console.log(null*"dsfadad")//NaN(在数学里面0乘以任何数都是0,  但是任何数应该是数值,乘以一个字符串肯定无法计算,所以js就用NaN来表示了)

console.log(null*"1")//0

console.log(null*"-1")//-0

console.log("1"+null)//1null  当和字符串相加则变成字符串了,

感觉这玩意确实有点坑爹

所以我的理解是null就是0

 

 

实际应用:

null判断获取到的对象是否为null

<div id="lga">sssssssssssss</div>

if($("#lga")!=null){

console.log("存在");

}

undefined一般判断变量

var message;

ifi(message==undefined){

  console.log("存在");

}

 

 

要分清null和undefined的区别,请看名人博客

http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html

 

 

© 著作权归作者所有

共有 人打赏支持
开源中国123456789
粉丝 5
博文 77
码字总数 66184
作品 0
海淀
私信 提问
细说JavaScript数据类型及转换

细说JavaScript数据类型及转换 JavaScript数据类型 1.Boolean(布尔) 布尔:(值类型)var b1=true;//布尔类型 2.Number(数字) 数值:(值类型)var n1=3.1415926;//数值类型 n1.toFixed...

开元中国2015
2015/07/13
0
0
JavaScript的赋值深坑

以前学C++的时候(大学时代),对传参时印象深刻的是,传的值是值还是值的地址. 之后学JavaScript的时候,发现不用理会那么多,虽然不严谨,但是用起来很便捷,比如说类型转换呀,啥的简单多了..... 可...

L3ve
2014/10/15
0
1
JavaScript菜鸽子基础知识总结(一)

学习JavaScript有段时间了,尽管学的不怎么好。但我相信有志者,铁杵磨成针。呵呵呵~~ ①JavaScript能做什么?我所了解的 ⑴在HTML网页中放入动态文本 ⑵响应用户在使用网页时产生的事件 ⑶检...

睡觉谁教谁叫呢
2014/02/18
0
0
深入JavaScript基础之深浅拷贝

最近在学到JavaScript对象的深拷贝和浅拷贝做了一些比较,将实际开发的点和基础点做了些小结,话不多说,开始进入主题吧。 基础认识---基本类型 基础认识---引用类型 浅拷贝的实现-对象&&数组...

楚梦浮生
2018/07/30
0
0
undefined与null的区别

大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的none,Ruby语言的nil。 有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和n...

ihaolin
2014/03/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

React SSR样式及SEO的实践

前一篇主要记录了一下SSR配置以及结合Redux的使用。这里简单说一下React SSR中样式处理和更优雅的SEO SSR样式 在React客户端渲染,添加样式很容易。写一个css样式文件,在对应组件中引用。标...

前端小攻略
2分钟前
0
0
华为手机太猛!余承东吹的牛今天都实现了

华为是世界上少有的在2B和2C领域同时取得成功公司。如今,华为消费者业务的营收,已经在华为总营收中占据“半壁江山”。 12月27日,华为董事长郭平在新年致辞中披露,预计2018年华为预计实现...

linux-tao
13分钟前
1
0
JSP的Model2模式

整体可以看做是 Request > Control > ( Service > DAO > POJO ) > Response POJO是数据实体类,最佳实践是与数据库物理表相对应,方便用工具进行生成,也易于理解。由于直接与物理表相对应...

max佩恩
22分钟前
0
0
rabbitMQ的使用

RabbitMQ介绍 RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间...

狼王黄师傅
26分钟前
0
0
面向对象继承

第1章 面向对象 1.1 知识回顾 1.Java中的数据类型 2.引用数据类型String中的方法 3.IO流_读写文件 1.2 面向对象概念回顾 什么叫面向对象编程?有人是这么理解的 也有人说不对,面向对象编程是你...

stars永恒
34分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部