不同类型值相比较的规则和类型转换、隐式转换

时间: 2019-05-11阅读: 35标签: 类型

相等运算符(==) 在遇到两个操作数类型不同的时候,要遵守的规则和类型转换 


1、如果-个值是null, 另一个是undefined,则它们相等 
null == undefined //返回true 

2、如果一个值是数字,另一个是字符串,先将字符串转换为数字,然后使用转换后的值进行比较。

1 == "1" //1==1  //结果是true
2 == "1" //2==1  //结果是false


3、如果其中一个值是true,则将其转换为1再进行比较。如果其中一个值是false,则将其转换为0再进行比较。

"1" == true     //1==1 结果是true
0 == false      //0==0 结果是true


4、如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值,然后再进行比较。对象通过toString()方法或者valueOf()方法转换为原始值,JavaScript语言核心的内置类先尝试使用valueOf(),再尝试使用toString(),除了日期类,日期类只能使用toString()转换,那些不是JavaScript语言核心中的对象则通过各自的实现中定义的方法转换为原始值。

原始值:不可变更的值,包括undefined、null、布尔值、数字、和字符串。

所有的对象都有toString() 和 valueOf()这两个方法。 
toString()方法的作用是,返回一个反映这个对象的字符串。 
valueOf()方法的作用是,一个对象那个如果存在任意原始值,它就默认将对象转换为表示它的原始值。


5、其他不同类型之间的比较均不相等。


如何理解JS内的Truthy值和Falsy值

在 JavaScript 中,Truthy (真值)指的是在 布尔值 上下文中转换后的值为真的值。所有值都是真值,除非它们被定义为 falsy (即除了 false,0,“”,null,undefined 和 NaN 外)。

Js复杂判断的更优雅写法

我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃肿,越来越看不懂

Typescript内置类型与自定义类型

大家用过 Typescript 都清楚,很多时候我们需要提前声明一个类型,再将类型赋予变量。例如在业务中,我们需要渲染一个表格,往往需要定义:

Js引用类型和函数进阶

值类型即基本数据类型,包括数值类型 number、布尔类型 boolean、字符串 string、null和undefined;引用类型即复合数据类型,包括对象 object、数组 array和函数 function

Symbol 类型

根据规范,对象的属性键只能是 String 类型或者 Symbol 类型。不是 Number,也不是 Boolean,只有 String 或 Symbol 这两种类型。到目前为止,我们只见过 String。现在我们来看看 Symbol 能给我们带来什么好处。

if条件中,js的强制类型转换

众所周知,JS在很多情况下会进行强制类型转换,其中,最常见两种是:1.使用非严格相等进行比较,对==左边的值进行类型转换2.在if判断时,括号内的值进行类型转换,转化为布尔值

js中typeof 和 instanceof 区别

typeof操作符返回一个字符串,表示未经计算的操作数的类型。 可能返回值有:undefined、object、boolean、number、string、symbol、function、object

Android 与 JavaScript 交互 支持的数据类型

在Android混合开发中,WebView是中间件,承担着渲染网页的职责。当需要Android原生与H5之间交互的时候,需要调用WebView的getSettings().setJavaScriptEnabled(true);以及webView.addJavascriptInterface(Js对象名,Java对象);

JS中的布尔 数字 字符串

JS中所有的值都可以转换成布尔类型 使用Boolean()或者 !!(两个感叹号),JS中所有的值都可以转换成数字类型,使用Number()或+。数字类型转换场景目的只有一个,用于计算,将后台传递的数据,从字符串转换为数字并参与计算

JavaScript基础之值传递和引用传递

js的值传递和引用(地址)传递:js的5种基本数据类型 number,string,null,undefined,boolean 在赋值传递时是值传递,js的引用数据类型(object,array,function)进行引用传递,其实底层都是对象。

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全