JS数据类型转换注意事项【建议收藏】

  1. ToPrimitive(obj, Number) 和 ToPrimitive(obj, String) 调用顺序不同在于: 区别在于调用 toString 方法和 valueOf 方法的顺序,区分这一点就行了。

    ToPrimitive(obj, Number) ==> Number({})

    1. 如果 obj 是基本类型,直接返回
    2. 否则,调用 valueOf 方法,如果得到原始值,则返回
    3. 否则,调用 toString 方法,如果得到原始值,则返回
    4. 否则,报错

    ToPrimitive(obj, String) ==> Number({})

    1. 如果 obj 是基本类型,直接返回
    2. 否则,调用 toString 方法,如果得到原始值,则返回
    3. 否则,调用 valueOf 方法,如果得到原始值,则返回
    4. 否则,报错
  2. 一元运算 +a

    +a 等同 ToPrimitive(obj, Number)

  3. 二元运算 a+b

    a+b 等同 ToPrimitive(obj) + ToPrimitive(obj)

    1. 当 + 两边有一个是字符串,则按字符串进行拼接
    2. 否则,转到 number 进行计算
  4. ToPrimitive(arr)

    ToPrimitive([]) => [].tostring() => [].join(“,”) => “”
    ToPrimitive([1, 2, 3]) => [1, 2, 3].tostring() => [1, 2, 3].join(“,”) => “1,2,3”

  5. ToPrimitive(obj)

    ToPrimitive({}) => {}.toString() => “[object Object]”
    ToPrimitive({ a: 1, b: 2 }) => { a: 1, b: 2 }.toString() => “[object Object]”

  6. 其他

    console.log(1 + null); //1
    console.log([] + []); //‘’
    console.log([] + {}); //‘[object Object]’
    console.log({} + {}); //‘[object Object][object Object]’

  7. 任何对象或数组转换成布尔值都得到true,包括空数组和空对象

  8. == 宽松相等的类型转换隐性法则
    在这里插入图片描述

  9. 为什么 [] == ![] 的值为true
    在这里插入图片描述

  10. 对于基本类型之间的比较,最后是转换成字符或数字的比较,主要向字符或数字转换,然后比较

  11. 对于非基本类型之间的比较,如果是相同类型就比较地址,非相同类型就进行转换成原始类型比较
    在这里插入图片描述

  12. {} == {}
    在这里插入图片描述
    在这里插入图片描述

  13. [] == {}
    在这里插入图片描述

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LocalStorage是HTML5中的一个新特性,它提供了一种在浏览器中存储数据的方法,数据存储在用户的本地计算机上,即使关闭浏览器,数据也不会丢失。在HTML5中,可以使用localStorage对象来访问和操作LocalStorage。 下面是保存数据到LocalStorage的步骤: 1.创建一个localStorage对象: ```javascript var storage = window.localStorage; ``` 2.使用setItem方法将数据保存到LocalStorage中: ```javascript storage.setItem("key", "value"); ``` 其中,key是要保存的数据的键,value是要保存的数据的值。 3.使用getItem方法从LocalStorage中获取保存的数据: ```javascript var value = storage.getItem("key"); ``` 其中,key是要获取的数据的键。 4.使用removeItem方法从LocalStorage中删除保存的数据: ```javascript storage.removeItem("key"); ``` 其中,key是要删除的数据的键。 完整的代码示例: ```javascript // 创建一个localStorage对象 var storage = window.localStorage; // 保存数据到LocalStorage中 storage.setItem("username", "Tom"); // 从LocalStorage中获取保存的数据 var username = storage.getItem("username"); console.log(username); // 输出:Tom // 从LocalStorage中删除保存的数据 storage.removeItem("username"); ``` 注意事项: 1. localStorage只能存储字符串类型的数据,如果要存储其他类型的数据,需要先将其转换为字符串类型。 2. localStorage的存储容量有限,不同浏览器的容量也不同,一般为5-10MB左右。如果数据量较大,建议使用其他存储方式,如IndexedDB或Web SQL。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值