前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >day015: JS数据类型之问——转换篇

day015: JS数据类型之问——转换篇

作者头像
用户3806669
发布2021-03-10 20:49:32
8320
发布2021-03-10 20:49:32
举报
文章被收录于专栏:前端三元同学前端三元同学

day015: JS数据类型之问——转换篇

1. [] == ![]结果是什么?为什么?

解析:

== 中,左右两边都需要转换为数字然后进行比较。

[]转换为数字为0。

![] 首先是转换为布尔值,由于[]作为一个引用类型转换为布尔值为true,

因此![]为false,进而在转换成数字,变为0。

0 == 0 , 结果为true

2. JS中类型转换有哪几种?

JS中,类型转换只有三种:

  • 转换成数字
  • 转换成布尔值
  • 转换成字符串

转换具体规则如下:

注意"Boolean 转字符串"这行结果指的是 true 转字符串的例子

3. == 和 ===有什么区别?

代码语言:javascript
复制
===叫做严格相等,是指:左右两边不仅值要相等,类型也要相等,例如'1'===1的结果是false,因为一边是string,另一边是number。

==不像===那样严格,对于一般情况,只要值相等,就返回true,但==还涉及一些类型转换,它的转换规则如下:

  • 两边的类型是否相同,相同的话就比较值的大小,例如1==2,返回false
  • 判断的是否是null和?developer/article/1799786/undefined,是的话就返回true
  • 判断的类型是否是String和Number,是的话,把String类型转换成Number,再进行比较
  • 判断其中一方是否是Boolean,是的话就把Boolean转换成Number,再进行比较
  • 如果其中一方为Object,且另一方为String、Number或者Symbol,会将Object转换成字符串,再进行比较
代码语言:javascript
复制
console.log({a: 1} == true);//falseconsole.log({a: 1} == "[object Object]");//true

4. 对象转原始类型是根据什么流程运行的?

对象转原始类型,会调用内置的[ToPrimitive]函数,对于该函数而言,其逻辑如下:

  1. 如果Symbol.toPrimitive()方法,优先调用再返回
  2. 调用valueOf(),如果转换为原始类型,则返回
  3. 调用toString(),如果转换为原始类型,则返回
  4. 如果都没有返回原始类型,会报错
代码语言:javascript
复制
var obj = {  value: 3,  valueOf() {    return 4;  },  toString() {    return '5'  },  [Symbol.toPrimitive]() {    return 6  }}console.log(obj + 1); // 输出7

5. 如何让if(a == 1 && a == 2)条件成立?

其实就是上一个问题的应用。

代码语言:javascript
复制
var a = {  value: 0,  valueOf: function() {    this.value++;    return this.value;  }};console.log(a == 1 && a == 2);//true
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-22,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 前端三元同学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • day015: JS数据类型之问——转换篇
    • 1. [] == ![]结果是什么?为什么?
      • 2. JS中类型转换有哪几种?
        • 3. == 和 ===有什么区别?
          • 4. 对象转原始类型是根据什么流程运行的?
            • 5. 如何让if(a == 1 && a == 2)条件成立?
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
            http://www.vxiaotou.com