摘要:面试官和有什么区别童鞋要求数据类型相同,会进行隐式类型转换面试官能输出么童鞋下面,我们来一起看看和到底有什么区别,以及上面问题的解法。其中,被称为引用数据类型,其他种被称为基本数据类型。是一种类似于字符串的,表示独一无二值的数据类型。
面试官:== 和 === 有什么区别?
童鞋:=== 要求数据类型相同,== 会进行隐式类型转换...
面试官:JavaScript:(a==1 && a==2 && a==3)能输出true么?
童鞋:???
下面,我们来一起看看 == 和 === 到底有什么区别,以及上面问题的解法。
数据类型JavaScript 语言中,数据类型有:undefined、null、Boolean、String、Number、Object、Symbol。
其中,Object被称为引用数据类型,其他6种被称为基本数据类型。Symbol 是一种类似于字符串的,表示独一无二值的数据类型。
隐式类型转换做一个小实验,得出不同类型的值用 == 操作符比较后的结果
类型(x) | 类型(y) | 结果 |
---|---|---|
undefined | null | true |
String | Number | toNumber(x) == y |
Boolean | 任何数据类型 | toNumber(x) == y |
Object | 任何数据类型 | toPrimitive(x) == y |
Symbol | 任何数据类型 | false |
toNumber() 和 toPrimitive() 方法是内部的,可以看一下估值
toNumber() 方法,比较好理解,就是转换成 Number 类型,类似 Number() 方法。
类型 | 结果 |
---|---|
undefined | NAN |
null | 0 |
Boolean | 任何数据类型 |
String | Number |
toPrimitive() 方法
类型 | 结果 |
---|---|
Object | 如果对象的 valueOf 方法的结果是原始值,返回原始值; 如果对象的 toString 方法返回原始值,就返回这个值; 其他情况都返回一个错误 |
举个例子,来说明一下 toPrimitive() 方法
let test = { value: 0, valueOf () { console.log("in valueOf fun") return this.value }, toString () { console.log("in toString fun") return this.value } } console.log("test == 0 ?", test == 0)
控制台输出结果:
回到面试题JavaScript:(a==1 && a==2 && a==3)能输出true么?
let a = { value: 0, valueOf () { return ++this.value } }
面试遇到隐式类型转换,再也不会怕啦~
本文首发于:https://github.com/yingye/Blog/issues/1
欢迎各位关注我的Blog,正文以issue形式呈现,喜欢请点star,订阅请点watch~
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/107762.html
摘要:与此相对,强类型语言的类型之间不一定有隐式转换。三为什么是弱类型弱类型相对于强类型来说类型检查更不严格,比如说允许变量类型的隐式转换,允许强制类型转换等等。在中,加性运算符有大量的特殊行为。 从++[[]][+[]]+[+[]]==10?深入浅出弱类型JS的隐式转换 本文纯属原创? 如有雷同? 纯属抄袭? 不甚荣幸! 欢迎转载! 原文收录在【我的GitHub博客】,觉得本文写的不算烂的...
摘要:绑定书中提到在中,实际上并不存在所谓的构造函数,只有对于函数的构造调用。规则使用构造调用的时候,会自动绑定在期间创建的对象上。指向新创建的对象绑定比隐式绑定优先级高。 showImg(http://ww1.sinaimg.cn/large/005Y4rCogy1fstcwvzkjzj30sg0g0qqn.jpg); 前言 最近正在看《你不知道的JavaScript》,里面关于this绑...
摘要:相对于显式使用,隐式转换则更加简洁。隐式转换为布尔值将其他类型值隐式转换为布尔值是我们最常用的一种转换。在以下场景中,都是进行判断,而只要传入的值不是布尔值,都会通过隐式类型转换转为布尔值。原文地址阿木木的博客与隐式鸭子类型转换 showImg(https://segmentfault.com/img/remote/1460000017309581); 前言 说实话,JavaScrip...
阅读 2307·2021-09-29 09:42
阅读 535·2021-09-06 15:02
阅读 2535·2021-09-02 15:40
阅读 2086·2019-08-30 14:23
阅读 1798·2019-08-30 13:48
阅读 1243·2019-08-26 12:01
阅读 945·2019-08-26 11:53
阅读 2110·2019-08-23 18:31