JavaScript Truthy和Falsy
来源:互联网 发布:ant编译java文件 编辑:程序博客网 时间:2024/06/03 22:54
转载自:百度百科-js falsy values 什么意思
定义
Truthy和Falsy:js变量中隐含的的boolean属性
介绍
首先,我是一个小白,一个相信有一天我也能成为高手的小白。好了,这就够了,那么,开始吧。
首先要说的是这个truthy以及falsy该如何翻译,google了下没有这单词。其实想了想也不必翻译,按照中文的感性理解,不就是“对的”,“能返回否的东西”嘛!
像很多语言一样,javascript也支持boolean数据类型(有true和false两个值),不过特别的是,javascript中的任何对象都还隐含一个boolean值,这便是大家所说的truthy和falsy原则。我们可以很方便的使用这个隐含的属性,特别是在变量比较上(//if条件句)。掌握好这些特别的规则有助于调试我们的前端代码。
truthy和falsy值
以下的值都隐含有false属性:
- false
- 0(零)
- “”(空串)
- null
- undefined
- NaN(Not-a-Number
- 注意,这是个number类型!用来表示变量不是number的number类型,有些拗口)
除此之外的其他值隐含的均是true属性,像“0”(字符串)、“false”(字符串),还有空函数、空数组、空对象这些比较容易搞混的,都是能返回true。正常的变量像“abc”,1234之类的当然不必说啦,通通true。
举个例子吧:
var a = !!(0); // a的值为falsevar b = !!("0"); // b的值为true
与falsy值之间比较
关于falsy值之间的比较,分为以下几种情况
1.false、0、空串三者是可以互等的
var c = (false == 0); // truevar d = (false == ""); // truevar e = (0 == ""); // true
2.null和undefined可以互等,但是不与其他几种相等
var f = (null == false); // falsevar g = (null == null); // truevar h = (undefined == undefined); // truevar i = (undefined == null); // true
3.NaN,不与其他任何值相等,甚至与自己都不等(//六亲不认,失去自我)
var j = (NaN == null); // falsevar k = (NaN == NaN); // false
再补充一个小知识
javascript使用typeof(NaN),返回值是number,也就是说这个NaN还是个number类型。还好js提供了一个函数inNaN()用来判断一个变量是否是数字。
如果你使用的时候有疑惑。。。
用强等于吧,如下:
var l = (false == 0); // truevar m = (false === 0); // false
另外一个比较特别的地方
空数组,例如var a = [];是返回true的,但也得看你怎么用,区别如下:
if ( [] ) {// 这里的代码将会执行}if ( [] == true ) {// 这里的代码不会执行}if ( [] == false ) {// 这里的代码将会执行}
也就是说,truthy和true还是不一样的,隐含有true属性的变量不可以认为它是true,它不是boolean类型!
- JavaScript Truthy和Falsy
- Truthy and Falsy Values in JavaScript
- Truthy Vs Falsy Values in JavaScript
- Truthy and Falsy: When All is Not Equal in JavaScript
- Truthy和Falsy:js变量中隐含的的boolean属性
- Falsy Bouncer
- Bonfire: Falsy Bouncer
- FreeCodeCamp学习--Falsy Bouncer
- Falsy Bouncer|FreeCodeCamp
- false 与 falsy 的区别
- JavaScript 和 JavaScript库
- JavaScript 数据类型和JavaScript 注释
- JavaScript和SICP
- JavaScript 和 DSL
- javascript setTimeout 和 setInterval
- javascript urlEncoding和urlDecoding
- JavaScript属性和对象
- Java、JavaScript和JScript。
- MIL图像函数库学习之Mod识别角度及位置范围
- 针对RadioButton图片遮挡住文字的情况适配
- java如何去创建数据库
- BZOJ 3438 最大权闭合子图
- Android 双击Back键退出应用
- JavaScript Truthy和Falsy
- Gradle中的buildScript代码块
- 基于python和amap(高德地图)web api的爬虫,用于搜索某POI点
- React的exenv模块简析
- 画虚线,指定宽度
- 修改JVM的启动内存
- android注册内容观察者
- 你不知道的javascript---词法作用域
- NanoPCT3开发板的安卓系统模块编译及烧录