类型转换及相等运算符

类型转换

类型转换分 显示类型转换隐式类型转换,这里主要讨论 显示类型转换

1、转换为 Boolean

数据类型转换为 true 的值转换为 false 的值
Undefined/undefined
Null/null
Number非零数值(包括无穷值)0NaN
String非空字符串“” (空字符串)
Object所有对象(不包含 null/

这种最简单了,按照我们的思维,几乎没什么特殊的。

2、转换为 String

2.1 方式一: toString()

  • 调用被转换数据的 toString() 方法

  • 例子:

    var a = 123;
    a = a.toString();
    
  • 注意:

    • 这个方法不适用于 nullundefined

      由于这两个类型的数据中没有方法,所以调用 toString() 时会报错

    • 对于普通对象,会返回字符串'[object Object]'

    • 对于数组,会遍历每个数组元素取调用 toString(),最后拼接起来

2.2 方式二: String()

  • 调用 String() 函数

  • 例子:

    var a = 123;
    a = String(a);
    
  • 原理:对于 Number Boolean String 都会调用他们的 toString() 方法来将其转换为字符串,

  • 注意:

    • 对于 null 值,直接转换为字符串 "null"。对于 undefined 直接转换为字符串 "undefined"
    • 对于普通对象,会返回字符串 '[object Object]'
    • 对于数组,会遍历每个数组元素取调用 toString(),最后拼接起来

小结:

toStringString 很类似
区别在于 String 可以转换 nullundefined
这两个函数,对普通对象,返回字符串 '[object Object]'
对数组,会遍历返回拼接

3、转换为 Number

Number() 是转型函数,可用于任何数据类型。另外两个函数主要用于将字符串转换为数值。

3.1 Number()

  • Undefined: 返回 NaN
  • Null: 返回 0
  • Boolean: true 转换为1,false 转换为0
  • Number: 直接返回
  • String:
    • 如果字符串包含数值字符,包括数值字符前面带加、减 号的情况,则转换为一个十进制数值。因此, Number("1") 返回1, Number("123") 返回123, Number("011") 返回11(忽略前面的零)。
    • 如果字符串包含有效的浮点值格式如 “1.1” ,则会转 换为相应的浮点值(同样,忽略前面的零)。
    • 如果字符串包含有效的十六进制格式如 “0xf” ,则会 转换为与该十六进制值对应的十进制整数值。
    • 如果是空字符串(不包含字符),则返回0。 如果字符串包含除上述情况之外的其他字符,则返回 NaN
  • Object: 先把对象转化为字符串,再转化为数字。

转换为 Number 最是难料

undefinedNaN, Null 转 0

字符串和对象更难搞

空字符串转0,有字母就 NaN

对象要转字符串后再转

一个字,麻烦

3.2 parseInt()/parseFloat()

这两个函数专门用来将一个字符串转换为数字的

parseInt()

  • 可以将一个字符串中的有效的整数位提取出来,并转换为 Number

  • 例子:

    var a = "123.456px";
    a = parseInt(a); //123
    
  • 如果需要可以在 parseInt() 中指定一个第二个参数,来指定进制

parseFloat()

  • 可以将一个字符串中的有效的小数位提取出来,并转换为 Number

  • 例子:

    var a = "123.456px";
    a = parseFloat(a); //123.456
    

相等运算符

==

  • 相等,判断左右两个值是否相等,如果相等返回 true,如果不等返回 false

  • 相等会自动对两个值进行类型转换,如果对不同的类型进行比较,会将其转换为相同的类型然后再比较,转换后相等它也会返回 true

  • 转换类型规则:

    • 如果任一操作数是布尔值,则将其转换为数值再比较是否相等。 false 转换为0, true 转换为1。
    • 如果一个操作数是字符串,另一个操作数是数值,则尝试将 字符串转换为数值,再比较是否相等。
    • 如果一个操作数是对象,另一个操作数不是,则调用对象的 valueOf() 方法取得其原始值,再根据前面的规则进行比较。
  • 特殊规则:

    • nullundefined

      • 由于 undefined 衍生自 null,所以 null == undefined 会返回 true。但是 null === undefined 会返回 false
    • NaN

      • NaN 不与任何值相等,包括它自身 NaN == NaN //false

    判断一个值是否是 NaN: 使用 isNaN() 函数

!=

  • 不等,判断左右两个值是否不等,如果不等则返回 true,如果相等则返回 false
  • 不等也会做自动的类型转换。

===

  • 全等,判断左右两个值是否全等,它和相等类似,只不过它不会进行自动的类型转换,
  • 如果两个值的类型不同,则直接返回 false

!==

  • 不全等,和不等类似,但是它不会进行自动的类型转换,如果两个值的类型不同,它会直接返回 true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值