Truthy和Falsy:js变量中隐含的的boolean属性

原文地址:http://www.sitepoint.com/javascript-truthy-falsy/

原文作者: 

一、前言

首先,我是一个小白,一个相信有一天我也能成为高手的小白。好了,这就够了,那么,开始吧。

以前在用javascript的时候偶尔也听过 ''(空串),0会返回false之类的,也确实用过来判断,最近看到一篇文章,有一个系统的介绍。才明白了,原来专业一点这叫做truthy和falsy原则呀,看见单词挺简单的,网上的大神们都不屑翻译,那么,就让我这个小白来练练手吧~

首先要说的是这个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的值为false
var b = !!("0"); // b的值为true
关于falsy值之间的比较,分为以下几种情况
1.false、0、空串三者是可以互等的,如下所示:
var c = (false == 0); // true
var d = (false == ""); // true
var e = (0 == ""); // true
2.null和undefined可以互等,但是不与其他几种相等,如下:
var f = (null == false); // false
var g = (null == null); // true
var h = (undefined == undefined); // true
var 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); // true
var m = (false === 0); // false
另外一个比较特别的地方

空数组,例如var a = [];是返回true的,但也得看你怎么用,区别如下:

if ( [] ) {
  // 这里的代码将会执行
}

if ( [] == true ) {
  // 这里的代码不会执行
}

if ( [] == false ) {
  // 这里的代码将会执行
}

也就是说,truthy和true还是不一样的,隐含有true属性的变量不可以认为它是true,它不是boolean类型!


------------------------------------------译文结束----------------------------

回头看一眼,这点小屁文章,根本就不用翻译,好吧。。。请喷吧。。。反正我还是小白






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值