扒开JQuery以及其他一些JS框架源码,常常能看到下面这样的判断,写惯了C#高级语言语法的我,一直以来没能系统的理解透这段代码。

var test;
//do something...
if(test){
//do something...
}

此处就系统的记录一下这个JS特殊值与boolean类型的转换,测试代码与结果如下

 window.onload = function () {
  var minusNum = -1;
  var zero = 0;
  var one = 1;
  var stringEmpty = '';
  var stringNotEmpty = '111';
  var objFunc = function () { };   console.group("JS中特殊值与bool的转换");
  undefined ? console.info("undefined is true") : console.info("undefined is false");
  null ? console.info("null is true") : console.info("null is false");
  minusNum ? console.info("负数 is true") : console.info("负数 is false");
  zero ? console.info("zero(数字0) is true") : console.info("zero(数字0) is false");
  stringNotEmpty ? console.info("stringNotEmpty is true") : console.info("stringNotEmpty is false");
  stringEmpty ? console.info("stringEmpty is true") : console.info("stringEmpty is false");
  objFunc ? console.info("objFunc is true") : console.info("objFunc is false");
  NaN ? console.info("NaN is true") : console.info("NaN is false");
  console.groupEnd();
}

==和===的区别

判断自然离不开==,同时引用记录一下。原文:http://blog.sina.com.cn/s/blog_4b32835b01014iv9.html

1、对于string,number等基础类型,==和===是有区别的

  1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等

  2)同类型比较,直接进行“值”比较,两者结果一样

2、对于Array,Object等高级类型,==和===是没有区别的

  进行“指针地址”比较

3、基础类型与高级类型,==和===是有区别的

  1)对于==,将高级转化为基础类型,进行“值”比较

  2)因为类型不同,===结果为false

typeof和instanceof

1、typeof用于检查变量的数据类型,返回一个字符串。

  typeof 返回字符串,有7种可能:"number"、"string"、"boolean"、"object"、"function"、"undefined" 、"symbol",

  typeof 检查的变量是一个对象,或者是 Null,那它就会返回 object。

2、instanceof是为了看一个变量是否是某个对象的实例,返回一个布尔值。

  instanceof只能用来判断对象和函数等对象类型,不能用来判断字符串和数字等基础类型。

JS判断时特殊值与boolean类型的转换的更多相关文章

  1. H5案例分享:使用JS判断客户端、浏览器、操作系统类型

    使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...

  2. javaScript中其他类型的值转换为Boolean类型

    将javaScript中其他任意类型的值转换为对应Boolean类型的值. 一  将number类型的值转换为Boolean类型 数值为0: var myBoolean = new Boolean(0 ...

  3. JS判断访问设备、客户端操作系统类型

    先给出一个实例:判断windows.linux.android 复制以下代码另存为html文件即可. <html> <head> <title>判断操作系统< ...

  4. [转]JS判断访问设备、客户端操作系统类型

    本文转自:http://www.cnblogs.com/duanguyuan/p/3534470.html 先给出一个实例:判断windows.linux.android 复制以下代码另存为html文 ...

  5. 使用JS判断客户端、浏览器、操作系统类型

    一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Android客户端. 核心代码如下: 方法一: &l ...

  6. MySql查询出来的值为 boolean类型的值

    解决方案: status_flag * 1 as status_flag 乘以1之后就不会是boolean类型的值了

  7. JS其他类型值转化为Boolean类型规则

    由于最近在笔试的时候,发现好多关于其他类型转化为Boolean类型的题目,因此总结一下! 一.String类型转化为Boolean 1.转化结果为true的情况 ①任何非空字符串 PS:空白字符串也是 ...

  8. js 判断数组的值是否有重复

    方法一: var s = ary.join(",")+","; for(var i=0;i<ary.length;i++) { if(s.replace( ...

  9. JS判断数组的值出现的次数,以及去重

    var arr = ["曹阳","曹阳","曹阳","张三","张三","张三" ...

随机推荐

  1. django2.0设置默认访问路由

    搭建完毕后,打开域名,直接来个报错,如果没有访问的地址,是不合适的 在urls.py中定义,默认访问的路由 from django.contrib import admin from django.u ...

  2. opencv_traincascade 训练自己的检测器

    2013年08月08日 ⁄ 综合 ⁄ 共 1061字 ⁄ 字号 小 中 大 ⁄ 评论关闭   经过近一个月的工程实战,把自己累积的经验分享给大家,教你如何训练一个收敛的,比opencv自带的data效 ...

  3. leetcode257

    /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...

  4. Linux 文件管理命令语法、参数、实例全汇总(一)

    命令:cat   cat 命令用于连接文件并打印到标准输出设备上. 使用权限 所有使用者 语法格式 cat [-AbeEnstTuv] [--help] [--version] fileName 参数 ...

  5. Cannot find class [org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer]

    解决方案:添加spring-webmvc好多人都不知道org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer这个类到底 ...

  6. sdc-docker

    ssh root@109.105.7.96 sdc-login docker /opt/smartdc/docker ls /var/svc/log/ cat smartdc-application- ...

  7. MySQL学习1---增删改查

    1.基本概念 数据表:由行和列组成的二维表: 数据表中的行通常叫做记录或者元组: 数据表中的列通常叫做字段后者属性: 主键:数据表中的每个记录都必须是唯一的,而不允许出现完全相同的记录. 键:即关键字 ...

  8. ios Https问题

    HTTPS认证过程:   ① 浏览器发送一个连接请求给安全服务器.   ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器.   ③ 客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA ...

  9. Qt Image Water Marker

    QString str = "input.jpg"; if(!img.load(str)){ return; } QImage mark(img.width()/2,img.hei ...

  10. IIS记录

    IIS中SSL配置.导入:http://www.cnblogs.com/whitewolf/archive/2010/07/07/1773066.html