【JS】falsy与truthy
1.Falsy值,当进行逻辑判断时均为false(如!!false==false)。六个Falsy值:false、undefined、null、正负0、NaN、""。
2.其余所有的值均为Truthy,当进行逻辑判断时均为true(如!![]==true)。Infinity、空数组、”0″都是Truthy值。
转载2个有趣的例子,点击标题查看详细:
一,[]
== ![] //true
解析:
1. 等号右边有 ! ,优先级比 == 更高,优先计算右边的结果。 [] 为非假值,所以右边的运算结果为 false。
![] ==> false
2. == 的任意一边有 boolean 类型的值时先把这个值转换成 number 类型,右边转换成了 0。
Number(false) ==> 0
3. == 的两边分别是 number 和 object 类型的值时,把 object 转换成 number 类型,需要对 object 进行 ToNumber 操作。
Number([].valueOf()) ==> 0
二,++[[]][+[]]+[+[]]//"10"
解析:
1.++[[]][+[]]+[+[]]==>
++[[]][+[]]
+
[+[]]
2.因为+[] === 0,所以原式==>
++[[]][0]
+
[0]
3.因为 [[]][0] 的意思是:获取 [[]] 的第一个元素,返回[[]]的第一个数组[],原式==>
1
+
[0]
4.当数组只有一个元素时,返回结果就是它自身的第一个元素,原式==>
1+"0"==>"10"//字符串
【JS】falsy与truthy的更多相关文章
- 如何理解JS内的Truthy值和Falsy值
跟据MDN的术语表解释如下: 在 JavaScript 中,Truthy (真值)指的是在 布尔值 上下文中转换后的值为真的值.所有值都是真值,除非它们被定义为 falsy (即除了 false,0, ...
- 小tips:JS的Truthy和Falsy(真值与假值)
前言 Truthy 不等于 ture,他是指是在Boolean上下文中转换后的值为真的值.我的理解是,在javascript中所有表达式为true的值.同理Falsy指的是在javascript中所有 ...
- Truthy and Falsy Values and Equality Operators
最近在学习JS. 有一些概念还希望跟大家分享出来 Truthy and Falsy Values Falsy Values: undefined, null, 0, '', NaN(not a nu ...
- [转] JavaScript中的Truthy和Falsy介绍
[From] http://www.jb51.net/article/59285.htm 与大多数编程语言一样,JavaScript中存在boolean类型,以供逻辑判断使用.不过,和很多其它编程语言 ...
- 关于truthy 和 falsy
一,强制类型转换 JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换(Type Conversion )将值转换为布尔值,比如:在条件语句或者循环语句中 一,truthy 在java ...
- Truthy Falsy
https://developer.mozilla.org/zh-CN/docs/Glossary/Truthy falsy(虚值)是在 Boolean 上下文中已认定可转换为‘假‘的值. JavaS ...
- JavaScript中的Truthy和Falsy
JavaScript中存在Truthy值和Falsy值的概念 — 除了boolean值true.false外,所有类型的JavaScript值均可用于逻辑判断,其规则如下: 1.所有的Falsy值,当 ...
- FCC JS基础算法题(10):Falsy Bouncer(过滤数组假值)
题目描述: 删除数组中的所有假值.在JavaScript中,假值有false.null.0."".undefined 和 NaN. 使用filter方法,过滤掉生成的 Boolea ...
- JS数组循环的性能和效率分析(for、while、forEach、map、for of)
从最简单的for循环说起 for( 初始化:条件; ){} 条件为Trusy 值时候,可以继续执行for 循环,当条件变为Falsy 时跳出for循环.for循环常见的四种写法const person ...
随机推荐
- bzoj3876: [Ahoi2014]支线剧情
神犇题解:http://blog.csdn.net/popoqqq/article/details/43024221 题意:给定一个DAG,1为起始点,任意一个点可以直接回到1,每条边有经过代价,求一 ...
- JAVA中最常用的十个快捷键
http://blog.sina.com.cn/s/blog_5fb39f910101dc2b.html 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以 ...
- Windows 7下硬盘安装Ubuntu 14.04图文教程
http://www.linuxidc.com/Linux/2014-04/100369.htm
- 工作偶遇小bug
1.下面这个在,调试一个单片机定时器是遇到的,整了一上午才找到,晕! 编译器是不认为它是错误的,所以,就你怎么运行都不是你想要结果。 2.使用pic单片机过程中,使用AD口时,相应端口的方向必须设为输 ...
- Ajax读取txt并对txt内容进行分页显示
function TransferString(content) { var string = content; try{ string=string.replace(/\r\n/g,"&l ...
- google 账号登陆chrome内容是中文的问题
最近要用到google accout使用某项服务,奇怪的是之前是英文,登陆后就显示中文了,我把浏览器默认的语言和电脑的系统语言改了也无济于事,最好还是google 帮忙解决了,原来我的google a ...
- OC基本数据存储方式
/** 一,数据存储 常用方式(5种) 1,XML属性列表 -- 保存在Doucuments文件夹 2,偏好设置(NSUserDefault)-- Library/Preference 需要配合wri ...
- SPRING 标签库
打造专属自己的淘宝旺铺装修店铺优化商品推广网站客服工作物流发货 如果这个User的宿舍在Gryffindor(Gryffindor是哈利·波特在Hogwarts的宿舍——译者注), 那么“House” ...
- lightoj1348
//Accepted 6004 KB 924 ms /* source: lightoj1348 time :2015.5.29 by :songt */ /*题解: 树链剖分 */ #include ...
- mac OS X Yosemite (10.10.5) 下 安装vim 7.4笔记
摘要 前言 需求与mac OS X 自带vim版本的冲突 默认Python解释器问题 并非Mac自带python的 homebrew 1. 前言 本文为自己作死折腾的问题记录 2. 需求与mac OS ...