微信号:ucaicn

介绍:600+篇技术干货文章,篇篇精华,专为程序员打造的技术提升素材库.

重新认识JavaScript中的true和false

2016-12-03 20:29 优才网

导读:跟其他大多数的计算机语言一样,JavaScript也支持Boolean类型的数据,这些值可以被设置为true 或者false 。另外,JavaScript中的所有数据类型的值都有一个默认的布尔值,一般称为真值(truthy)或者假值(falsy)。在处理真值和假值时会有一点奇怪,尤其是变量与变量之间进行比较的时候。理解更多相关的怪异规则会对我们开发调试复杂的客户端应用程序很有帮助。

今天优优推荐的这篇译文,就会对truthyfalsy进行详细讲解,希望对大家有帮助。

真值和假值


下面这些值在JavaScript中都是falsy

  • false

  • 0 (数字零)

  • "" (空字符串)

  • null

  • undefined

  • NaN (一个特殊的Number值,意为Not-a-Number!)

除上面几个值以外,其他所有值都是truthy,包括字符串"0", "false", 空函数,空数组,空对象。

var a = !!(0); // 把变量的值设为falsevar b = !!("0"); // true

假值的比较


Falsy values遵循一些看起来怪怪的比较规则,这些规则可能会导致程序出现一些逻辑错误。

假值false0""三者是相等的,并且它们之间可以相互比较。

var c = (false == 0); // truevar d = (false == ""); // truevar e = (0 == ""); // true

假值nullundefined,除了它们自身之外和任何值都不相等。

var f = (null == false); // falsevar g = (null == null); // truevar h = (undefined == undefined); // truevar i = (undefined == null); // true

最后,假值 NaN 和任何值都不相等,包括 NaN 本身!

var j = (NaN == null); // falsevar k = (NaN == NaN); // false

你应该知道typeof(NaN)返回"Number"。幸运的是,JavaScript有一个核心函数isNaN()来判断一个值是否是NaN。

如果还是有疑惑

那么请在使用真值、假值容易导致逻辑错误的地方,使用严格相等(===)和严格不相等(!==)吧。这两个操作符会同时比较对象的类型和值。

var l = (false == 0); // truevar m = (false === 0); // false

在你写JavaScript代码的时候,真值和假值让你痛苦过吗?

作者简介:Craig Buckler是一名英国特约web顾问,他早在1995年就 搭建了一个在IE 2.0 上面展示的页面。从那时候开始,他就开始倡导web标准,可访问性,HTML5技术的最佳实践。。


原文:https://www.sitepoint.com/javascript-truthy-falsy/

译文:https://segmentfault.com/a/1190000007665056

作者:Craig Buckler
译者:杨忠勋


推荐阅读:

 
优才网 更多文章 10年程序员生涯,13条中肯的建议,值得你阅读 优才学院荣膺腾讯教育“2016年度知名IT教育品牌” vue2.0构建单页应用最佳实战 免费公开课 | 薪资增加30%的技术面试和简历写作秘诀 循序渐进地代码重构
猜您喜欢 干货丨2015-2016交互体验趋势 用Pygame和Python做游戏-从入门到精通(1) Docker基础技术:AUFS 新美大与糯米合并?极光数据告诉你,餐饮O2O处于什么状况 从0到阿里,开发者的技术分享