javascript的==和===,以及if(xxx)总结

转载请注明 本文出自:http://blog.csdn.net/nancle

首先说==和===

  • 首先说明一个非常特殊的值NaN, typeof(Nav)得到‘number‘,可是NaN不等于不论什么一个值(包含它本身)。推断一个值是不是NaN仅仅能使用isNaN

    NaN == NaN //得到 false
    NaN === NaN //得到false
    isNaN(NaN) //得到true
  • 然后===也比較简单:
    1. 等号两边类型和值都相等才返回true

      1 === 1 //得到 true
      1 === ‘1’//得到false
    2. 对于对象、数组、函数(三者均为对象Object的instance):仅仅有等号两边引用了同一个对象。才返回true。引用不同对象。即使两个对象值相等也返回false。
      var a = {test:‘test‘};
      var b = {test:‘test‘};
      var c = a;
      a === b //得到false
      a === c  //得到true
    3. 对于undefined和null:仅仅有两边同一时候为undefined或者同一时候为null时全然相等
      undefined === undefined //得到true
      null === null //得到true
      undefined === null //得到false
  • ==略微复杂些:
    1. 假设等号两边的类型和值相等则返回true
    2. 假设等号两边类型相等。可是值不相等,则按下面规则比較:
      • 假设一个值是数字。还有一个值是字符串,把字符串转换为数字。再用转换后的值进行比較。

        1 == ‘1‘ //得到true
      • 假设一个值为true,将它转化为1,再进行比較。

        假设一个值为false,把它转化为0,再进行比較。

        true == 1 //得到true
        0 == false// 得到true
      • 假设等号两边都是对象,那么必须引用同一个对象才返回true。假设一个值是对象,还有一个值是数字或字符串。将对象转换成原始类型的值,再进行比較。能够使用对象的toString()方法或valueOf()方法把对象转化成原始类型的值。

        JavaScript核心语言的内部类通常先尝试valueOf()方法转换,再尝试toString()方法转换,可是对于Date类。则先运行toString()方法再运行valueOf()方法转换。不属于JavaScript核心语言的对象则能够採用JavaScript实现定义的方式把自身转换成原始数值。

        var  a = {test:‘test‘};
        var  b = {test:‘test‘};
        a.valueOf = function(){return 1};
        b.valueOf = function(){return 1};
        a == b // 返回false
        1 == a //返回true
    3. 对于undefined和null: 等号两边出现随意一个都返回true
      undefined == undefined //得到true
      null == null //得到true
      undefined == null //得到true

然后说明if(xxx):

if(xxx)事实上非常easy,它始终会把xxx的值转换成Boolean(即true或者false);  0,‘0‘,[],null,undefined,NaN转换成Boolean类型都为false。

附:这里说一个非常实用的技巧。在变量前面加两个!! 取反符号。能够把变量强制转换成Boolean类型,这样一来,!!NaN ===  !!null也得到true,奇妙吧!

时间: 2024-09-30 20:54:14

javascript的==和===,以及if(xxx)总结的相关文章

javascript实现(分享到xxx)的小实例

javascript实现(分享到的小实例) 这个算值运动的一个实例应用吧 HTML代码: <div id="tag"> <span id="showInfo">分享到</span> </div> css代码: #tag{ height:200px; width:200px; background:green; position:absolute; top:100px; left:-200px; } #tag span{

JavaScript入门笔记1

JavaScript是一种直译式脚本语言,为HTML网页增加动态功能. <script type="text/javascript">(text表示两个标签之间的文本类型,javascript表示的是浏览器的文本是属于JavaScript语言) document.write("..."); ..... </script> 1.在写javaScript代码的时候我们拥有两种方式: 第一种是写在HTML的文件中,通常这时候我们会用 上面的方式,来

Delphi XE6 通过JavaScript API调用百度地图

参考昨天的内容,有朋友还是问如何调用百度地图,也是,谁让咱都在国内呢,没办法,你懂的. 首先去申请个Key,然后看一下百度JavaScript的第一个例子:http://developer.baidu.com/map/jsdemo.htm 下一步,就是把例子中的代码,移动TWebBrower中. unit Unit3; interface uses  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Var

W3cshool之JavaScript基础

1.  JavaScript 对大小写敏感 名为 "myfunction"的函数和名为 "myFunction" 的函数是两个不同的函数,同样,变量 "myVar" 和变量 "myvar" 也是不同的. JavaScript对大小写敏感 - 所以当您创建或使用变量.对象及函数时,请注意字符的大小写. 2.  如何与老的浏览器打交道 那些不支持 JavaScript 的浏览器会把脚本作为页面的内容来显示.为了防止这种情况发生,我

javascript学习笔记(1)-类型、

一.javascript中是弱类型,声明定义时不需指定类型,系统自动识别.系统内部共7种类型: 6种原始类型: Number,Boolean,Null,Undefined,String,Symbol(ECMAScript 6 新定义)  其他类型:Object //系统内部类型:var x = 1.0; //不区分整数和浮点数,都是Number类型 var x = " i'm "; //字符串类型 var x = true; //布尔类型 null //空值 undefined //未

JavaScript全局函数 unescape() escape() encodeURI() decodeURI() decodeURIComponent() encodeURIComponent()

unescape() 函数可对通过 escape() 编码的字符串进行解码. 语法unescape(string)  string必需.要解码或反转义的字符串.返回值 string 被解码后的一个副本. 说明:该函数的工作原理是这样的:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和 \uxxxx 替换这样的字符序列进行解码. 提示和注释注释:ECMAScript v3 已从标准中删除了 unescape() 函数,并反对

javascript“命名空间”的费曼输出[原创]

Javascript由于没有命名空间的概念,所以好多的框架或库就用了某些“命名空间”的技巧.在学习作为函数的命名空间时,我翻阅了好多的书本和blog,很多的概念和说明都是要么过于烦杂或过于简单.现在由我来进行一个的系统的描述和介绍. 一.浏览器启动后的初步理解 1.我们要上网,就要打开浏览器,输入网址,浏览器就负责渲染和相应用户的鼠标动作.而打开浏览器这个进程后,浏览器的网络线程负责解析网址为ip地址,去网页服务器下载网页文件到本地硬盘,我就称这个线程是network线程:另外一个线程是负责解析

模仿块级作用域

在JavaScript中没有块级作用域的概念.这就意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的. <script> for(var i=0;i<5;i++) { } alert(i); </script> 就上面这个例子中,可以弹出i是5,因为for语句事实上是包含在window.onload= function(){}这个函数中,alert也在这个函数中. 而在java.c++中i只会在for循环的语句块中定义,循环一但结束,变量i就会被销毁.而在Jav

OCUpload的简单介绍与使用

 OCUpload (One Click Upload)译成中文就是一键上传的意思.它是JQuery的一个插件.   对于传统的文件上传,只能通过form表单,将enctype设置为multipart/form-data,选中文件后还需在页面点击submit提交按钮,提交表单,才能在后台接收上传的文件并进行相关字段解析,上传成功后,页面还要刷新,这样并不符合我们的某些实际需求.如果要用ajax进行文件上传达到不刷新页面的效果,这样也是不对的,因为ajax不支持文件上传,这是因为response原