文档章节

js学习之——数据类型间的转换以及==和===的理解

o
 osc_n6euf5h6
发布于 2019/03/20 11:10
字数 557
阅读 13
收藏 0

精选30+云产品,助力企业轻松上云!>>>

一、数据类型的转换

js是一种松散型语言,js的数据类型由5种基本数据类型和1种引用类型组成,各种数据类型在一定程度上可以进行转换,下面贴上各个类型间强制转换的结果。

1、其他数据类型向Number的转换

 

 1             Number(1) //1
 2             Number(NaN) //NaN
 3             Number(true) //1
 4             Number(false) //0
 5             Number(undefined) //NaN
 6             Number(null) //0
 7             Number({}) //NaN
 8             Number({a:1}) //NaN
 9             Number([]) //0
10             Number([1,2,3]) //NaN
11             Number("1") //1
12             Number("1.1") //1.1
13             Number("1a") //NaN
14             Number("a1") //NaN
15             Number("0xf") //15
16             Number("031") //31
17             Number("") //0

 

2、其他数据类型向String的转换

 

 1         String(1) //1
 2             String(NaN) //NaN
 3             String(true) //true
 4             String(false) //false
 5             String(undefined) //undefined
 6             String(null) /null
 7             String({}) //[Object Object]
 8             String({a:1}) //[Object Object]
 9             String([]) //""
10             String([1,2,3]) //1,2,3
11

 

3、其他类型向Boolean的转换

 1        Boolean(1) //true
 2             Boolean(-1) //true
 3             Boolean(0) //false
 4             Boolean(NaN) //false
 5             Boolean("") //false
 6             Boolean("0") //true
 7             Boolean(undefined) //false
 8             Boolean(null) //false
 9             Boolean({}) //true
10             Boolean({a:1}) //true
11             Boolean([]) //true
12             Boolean([1,2,3]) //truer\

 

二、==和等===的理解

==在比较两者是否相等时,会把两边的操作数转换成相同的数据类型然后再进行比较。那具体操作数是转换成什么数据类型呢,下面有一个规则:

1、如果一个值是null,另一个是undefined,则相等。

2、如果一个是数值,一个是字符串,则把字符串转成数值再进行比较。

3、如果一个是true,则把true转为0,同理把false 转为0再进行比较。

4、如果一个值是对象,另一个是数字或字符串,则将对象转换成原始值再进行比较(日期对象转换成字符串,其它对象先尝试调用valueOf()方法再尝试使用toString())

5、其他不同类型的转换都不相等。

6、NaN==NaN    false

===不仅要值相等,还需要类型相等才会相等。有两个特殊的情况,一是NaN===NaN为false,+0===-0为true。

为了避免这两种情况,es6引进了Object.is()方法,使得Object.is(NaN,NaN)为true, Object.is(-0,+0)为false。

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
每个JavaScript工程师都应懂的33个概念

摘要: 基础很重要啊! 原文:33 concepts every JavaScript developer should know 译文:每个 JavaScript 工程师都应懂的33个概念 作者:stephentian Fundebug经授权转载,版权归原作者所有...

Fundebug
2018/10/30
0
0
JavaScript零基础入门——(三)JavaScript的变量类型

JavaScript零基础入门——(三)JavaScript的变量类型 欢迎大家回到我们的JavaScript零基础入门课程,上节课我们了解了JavaScript的变量,这节课我们接着上一节课,讲一讲JavaScript的变量类...

JandenMa
2018/06/09
29
0
📜 每个 JavaScript 工程师都应懂的33个概念中文版 - JavaScript开发社区 | CTOLib码库

JavaScript开发者应懂的33个概念 简介 这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南。 本篇文章是参照 @leonardom...

2018/11/09
0
0
JS33个概念

JavaScript开发者应懂的33个概念 简介 这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南。 本篇文章是参照 @leonardom...

osc_rhtu94s6
2018/11/17
2
0
JavaScript开发者应懂的33个概念

JavaScript开发者应懂的33个概念 简介 这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南。 本篇文章是参照 @leonardom...

osc_yy79la80
2018/11/21
2
0

没有更多内容

加载失败,请刷新页面

加载更多

使用amoeba实现mysql读写分离

转载马士兵连老师笔记 使用amoeba实现mysql读写分离 1、什么是amoeba? Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、...

兵荒马乱的青春
18分钟前
0
0
学Vue,就要学会vue JSX(二)

学习JSX,先了解一下createElement 提到JSX,不可避免的就要提到createElement,当你看完本节,你会发现,奇怪的知识又增多了。ok,我们接着上一部分继续讲。这一次的准备工作是了解createEleme...

osc_kurqu050
19分钟前
17
0
学Vue,就要学会vue JSX(三)

是时候使用JSX代替createElement了 接着上面的讲,当我们看到上面用createElement去实现组件,太麻烦了,别说工作效率提高了,就是那些嵌套可以嵌套正确就很赞了,所以我们需要用JSX去简化整...

osc_tq5hz9vv
20分钟前
13
0
protocol buffer使用

protocol buffer使用例子 protocol buffer是什么 https://developers.google.com/protocol-buffers 这是protocol buffer的官方网站,上边有详细的使用方式。 一般常见的序列和反序列方式就是...

RandomObject
21分钟前
7
0
小白的前端之路-HTMl

HTML——超文本标记语言 HTMl里面有标签,标签又分为单标签和双标签,也分为行级元素和块级元素 标签是用<>包裹起来的,而且必须要有<>,否则会直接显示在浏览器上面哦 现在介绍一下常用标签...

osc_e45irv7l
22分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部