博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js的类型转换
阅读量:6915 次
发布时间:2019-06-27

本文共 2328 字,大约阅读时间需要 7 分钟。

javascript的原始类型(primitive type)

有5种primitive type,分别是Undefined、Null、Boolean、Number 和 String。 Null类型:      null类型也只有一个值,即null。undefined实际上是从null派生而来的,因此ECMAScript把他们定义为相等的。      alert(null == undefined); //output "true" alert(null === undefined); //output "false" ==时它会自动转化为null,所以返回true。不过如果用严格比较符===,不发生转化,将返回false。     尽管两个值相等,但是他们的含义却不一样,undefined是声明了变量但为对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果函数要返回的是对象,那么找不到该对象时,返回的通常是null。 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

js七种数据类型:Sting  Object  null  undefined  Array  Boolean  Number

js五种基本类型:String Boolean Number null undefined
typeof六种返回格式:'string'  'number'  'object'  'function'  'boolean'  'undefined'

不像我们在学习JAVA时,被告知JAVA是完全OOP的语言:class是一类具有共同特点的物体的抽象,object是某个class下具体的一个实现,Object类是所有类的顶层父类,对Java的认知是从类与对象开始的;Javascript则不然,它是从类型(type)开始,在各类语言中遇到的number,string, boolean, object, function,array等都属于类型。

   这些类型在JS中分为两大类:原生类型与对象类型,原生类型包括:number,string, bool, null, undefined;剩下的非原生类型对象都属于对象类型,包括:object, array, function等,那这里的object专指具有属性(attribute)的对象,在Firebug中的代码示例如下:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

转 boolean 规则:

null, undefined, "", 0, -0, NaN 转换成布尔值是false, 剩下的全转化 true;

 

转 number 规则:

string  '2.3.1' => NaN;

null, '', false, [] ==>> 0;

undefined => NaN;

object => x    Number(object.toString())

 

隐式类型转换 ==

1、有布尔值则转换为数值

2、字符串数值,则字符串转换为数值

3、只有一个是对象,则toString() valueOf()

4、null == undefined

5、NaN != NaN

6、对象==,比较内存地址

在逻辑运算表达式中,非布尔值会进行转换为布尔值。算上false一共有6个值(false,""(空字符串)、0和NAN、null、undefined)会转化为false.称这6个值为falsy值: 

特别注意的是typeof('0')=='string',即'0'是一个字符串对象,对对象进行逻辑运算结果为true

数据类型 转换为true的值 转换为false的值
Boolean true false
String  任何非空字符串 空字符串
Number 任何非零数字值(包括无穷大) 0和Null
Object 任何对象 null
Undefined   Undefined

console.
log
(([])?
true
:
false
); 
console.
log
(([]==
false
?
true
:
false
)); 
console.
log
(({}==
false
)?
true
:
false
得到的结果分别是什么?()//true true false
第一个([])布尔转换成true.
第二个,==相等比较时,允许类型转换。
其他类型值和布尔值==比较时,先将布尔值强制转换为对应数字,再进行比较。所以([]==false)-->([]==0)
[]和数字==比较时,将[]转数字0,因此([]==false)-->([]==0)--->(0==0)---->true
第三个同上,{}==false--->{}==0-->NaN==0-->false

转载于:https://www.cnblogs.com/aixiuxiu/p/6541826.html

你可能感兴趣的文章
关于slice()、substr()、substring()方法
查看>>
['1','2','3'].map(parseInt)的返回值是什么?
查看>>
引入iconfont图标-微信小程序
查看>>
权限(适用于初学者)
查看>>
startService过程
查看>>
内容创业转舵
查看>>
leetcode 120 三角形最小路径和
查看>>
圣杯布局进阶版-flex布局实现
查看>>
《速度与激情》范迪塞尔代言!雅迪和高端“死磕”到底
查看>>
LLDB 知多少
查看>>
淘宝、网易移动端 px 转换 rem 原理,Vue-cli 实现 px 转换 rem
查看>>
js监听gif停止 libgif-js Gif 操作(开始,暂停,移动帧...) 功能强大
查看>>
java并发编程 • 核心 • 状态管理
查看>>
[译] 从没有人告诉过我的 CSS 小知识
查看>>
这个乐趣,支付宝落地实践
查看>>
Golang 1.x版本泛型编程
查看>>
武汉区块链软件技术公司:区块链应用为何成为现实版的“海市蜃楼”
查看>>
关于制作pod时使用xib等资源文件的问题
查看>>
《代码大全》读书笔记-构建的前期
查看>>
混合云管理问题,你解决了么?
查看>>