js基础之关于Boolean及相等运算符的隐式类型转换
2017-12-01 13:43
736 查看
Boolean函数
根据 w3c规范 布尔对象共有这几种方法:方法 | 描述 |
---|---|
toSource() | 返回该对象的源代码。 |
toString() | 把逻辑值转换为字符串,并返回结果。 |
valueOf() | 返回 Boolean 对象的原始值。 |
JavaScript的值都可以转化为布尔值,下面这些值会被转换为false:
undefined null 0 -0 NaN ""//空字符串
所有其他值,包括所有的对象(数组)都会转化为true。
也就是说:
var c = Boolean([]); console.log(c); // true
结果为真。
boolean应用
Boolean常常应用的有两种,一种是if(a==b)?,一种是if(o)?。if(o)?
对于第二种,只要当o不是false,null和undefined时就会执行if之后的代码。也就是说
if({}&&[]),为真。
但是
var fn = function() {}; if (fn && fn()) { console.log(22222); }
这个条件判断执不执行呢?
结果是不执行的,因为
fn()是undefined啊小傻瓜
var obj = {}; var string = ""; var array = []; var fn = function() {}; if (obj) { console.log("obj"); } if (string) { console.log("string"); } if (array) { console.log("array"); //空字符串不输出 } if (fn) { console.log("fn"); }
结果为
还是那句话咯
undefined、null、0、-0、NaN、”” 为false
if(a==b)?
这种应用呢,需要用到隐式类型转换,比较麻烦一点== 和 === 运算符用于比较两个值是否相等,但是===为严格相等,它不会进行隐式类型转换,==会进行隐式类型转换。
严格相等运算符”===“首先计算其操作数的值 然后比较这两个值。
相等运算符”==“
也就是说:
懵了吗?哈哈 一言以蔽之,这之中所有的比较都是倾向于转化为数值再进行运算的。
if (null == undefined) // true if (null == 0) if (null == NaN) if (null == '') if (undefined == 0) if (undefined == '') if (undefined == NaN) if (NaN == 0) if (NaN == '') if (0 == '') //true if (NaN == false) if (0 == false)//true if ('' == false)//true if (undefined == false) if (null == false) if (NaN == true) if (0 == true) if ('' == true) if (undefined == true) if (null == true) if ([] == null) if ([] == undefined) if ([] == 0)//true if ([] == '') //true if ([] == NaN) if ([] == false)//true if ({} == null) if ({} == undefined) if ({} == 0) if ({} == '') if ({} == NaN) if ({} == false) if([1]==[1]) if({a:1}=={a:1})
说说最后两个是为嘛吧,因为其都为对象,对象为引用值晓得吧,所以比较的是内存中的位置,指针指向的位置不一样,所以不相等。
这个面试笔试又常常考,所以尽力记住咯。
我把几个对的拎出来了 ↓
if (null == undefined) // true if (0 == '') //true if (0 == false)//true if ('' == false)//true if ([] == 0)//true if ([] == '') //true if ([] == false)//true
代码更新在github 欢迎验证
https://github.com/suedar/js-/tree/master/Boolean
相关文章推荐
- JS值——学习小Demo之关于假值、绝对相等、强弱类型转换应用、symbol、-0
- 基础备忘:C++ 隐式类类型转换
- JS中的类型转换(显示转换/隐式转换)
- Chapter 3、Java语法基础(三)--- 运算符、数据类型转换 (22nd,Feb)
- 【Professional C# 读书笔记】(二)-----语言基础:继承,运算符,类型转换的杂七杂八
- C++:关于C++的四个类型转换运算符
- 【知识整理】javascript基础语法总结(2)——数据类型转换和运算符
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- 关于javaBean中boolean类型变量的set和get注入后传到前端JS中的问题
- js中其他类型值与Boolean类型值之间的转换
- 【JS基础】类型转换——不同数据类型比较
- js中,关于不同类型比较,各种类型的转换原则
- Js基础二(字面量、typeof、所类型的boolean值)
- JAVA基础二(java中的注释、ava编程语法基础、java数据类型、数据类型的转换、变量、运算符、分支语句、循环语句)
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- 关于C语言的隐式类型转换
- [c++基础] 四种类型转换和隐式类型转换
- 关于js类型转换骚操作
- C++隐式的类类型转换和类型转换运算符