`
piperzero
  • 浏览: 3478951 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

原文作者:Craig Buckler

一、前言

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

以前在用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类型!


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

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






分享到:
评论

相关推荐

    JavaScript中的Truthy和Falsy介绍

    不过,和很多其它编程语言不一样的是,JavaScript中存在Truthy值和Falsy值的概念 — 除了boolean值true、false外,所有类型的JavaScript值均可用于逻辑判断,其规则如下: 1.所有的Falsy值,当进行逻辑判断时均为...

    xpbutton控件

    FBorderDraw : Boolean; FCanFocus : Boolean ; FCancel : Boolean ; FDefault : Boolean ; FDragging: Boolean; FGradientBeginColor : TColor ; FGradientEndColor: TColor; FGlyph: TBitmap; FKind: ...

    boolean-object:将对象中的属性值转换为布尔值

    布尔对象 将对象中的属性值转换为布尔值。安装 npm install boolean-object用法 var booleanObject = require ( 'boolean-object' )var obj = { foo : 'true' , bar : 'false' , baz : 1 , qux : 0 , str : 'string'...

    使用PNG图片做按钮的组件TPngButton

    这是本人根据网上的PNG按钮组件针对d7和xe做的修改版本。新增属性: Anchors: TAnchors; //按钮相对位置 Action: TActionList; //与 actionlist 连接 CaptionAlign: TAlignment; //按钮标题对齐方式 //是否填充...

    JavaScript中的boolean布尔值使用学习及相关技巧讲解

    JavaScript中的boolean布尔值使用学习及相关技巧讲解,特别是Boolean的用法以及适用!!将truthy或falsy值转换为布尔值的用法非常巧妙,需要的朋友可以参考下

    javascript之Boolean类型对象

    Boolean对象和Java中的Boolean封装类很像,它有两个值:true和false 1、创建Boolean对象 复制代码 代码如下:var boo = new Boolean();//此时未对boo进行赋值,但是它的默认值为false var boo = new Boolean(true);...

    JS字符串false转boolean的方法(推荐)

    下面小编就为大家带来一篇JS字符串false转boolean的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    自适应图片轮播轻量化插件版(前端技术分享)

    // auto: true, // Boolean: 设置是否自动播放, true or false // speed: 500, // Integer: 动画持续时间,单位毫秒 // timeout: 4000, // Integer: 图片之间切换的时间,单位毫秒 // pager: false, // Boolean: ...

    delphi 类似五子棋的五福棋游戏.rar

    delphi编写的类似五子棋的五福棋游戏源码,程序设计:石晓东,游戏带有声音,开始游戏请点击按钮,和五子棋有点像。  function dushi(t:Boolean): Boolean;//判断堵死,t是返回正值,还是负值  function zouzi(x:...

    nuxtjs-yandex-metrika:NuxtJS模块插件,用于连接Yandex.Metrica

    必须在模块部分中添加nuxt.config.js: modules: [ [ '@rkaliev/nuxtjs-yandex-metrika', { id: 'XXXXXX', webvisor: boolean, clickmap: boolean, debug: boolean, noJS: boolean, disabled: boolean, }...

    第三部分:学会在mimics中操作Boolean.avi

    Mimics Medical 20.0学习视频教程

    javaweb前端相关入门关于变量的简单知识

    在JavaWeb前端开发中,变量是非常重要的概念。它们用于存储和操作数据,帮助我们在程序中临时保存和使用值。下面是一些关于变量的简单知识: 1. 变量声明:在使用变量之前,需要先声明它们。声明变量包括指定变量的...

    Javascript变量函数浅析

    一、变量 在javascript变量中可以存放两种类型的值:原始值和引用值。 原始值存储在栈上的简单字段,也就是值直接存储在变量所标示的位置内。 引用值存储在堆内的对象,栈内变量保存的是指向堆内对象的指针值。 在...

    JS中准确判断变量类型的方法

    在 JS 中,有 5 种基本数据类型和 1 种复杂数据类型,基本数据类型有:Undefined, Null, Boolean, Number和String;复杂数据类型是Object,Object中还细分了很多具体的类型,比如:Array, Function, Date等等。 判断...

    详解JavaScript 的变量

    ECMAScript变量一般有两种数据类型的值:基本类型和引用类型。 基本类型: 简单的数据段:Undefined, Null, Boolean, Number, String 引用类型:多个值构成的对象; 1. 动态的属性 定义两者的值:创建一个变量并为...

    详解JavaScript的变量

    ECMAScript变量一般有两种数据类型的值:基本类型和引用类型。 基本类型: 简单的数据段:Undefined, Null, Boolean, Number, String 引用类型:多个值构成的对象; 1.动态的属性 定义两者的值:创建一个变量并为...

    TMS.rar_advofficepager_delphi tfont_ellipsis

    将Caption:String改为FCaption:String,然后在函数体中新建一个局部变量“Caption:WideString”, 最后在代码段的第一行加入:Caption:=FCaption;即可。 修正代码完全保证了源代码的兼容性,仅仅是在开始改变了...

    常用 js 大全常用 js 大全常用 js 大全常用 js 大全常用 js 大全

    7.JS 中的值类型:String,Number,Boolean,Null,Object,Function 8.JS 中的字符型转换成数值型:parseInt(),parseFloat() 9.JS 中的数字转换成字符型:(""+变量) 10.JS 中的取字符串长度是:(length) 11.JS 中的字符与...

    javascript 问题集合

    7.JS中的值类型:String,Number,Boolean,Null,Object,Function 8.JS中的字符型转换成数值型:parseInt(),parseFloat() 9.JS中的数字转换成字符型:(""+变量) 10.JS中的取字符串长度是:(length) 11.JS中的字符与字符...

    JavaScript中常用的一百零七条语句

    7.JS中的值类型:String,Number,Boolean,Null,Object,Function 8.JS中的字符型转换成数值型:parseInt(),parseFloat() 9.JS中的数字转换成字符型:( " " 变量) 10.JS中的取字符串长度是:(length) ...

Global site tag (gtag.js) - Google Analytics