我们都知道js的基本类型有undefined,null,boolean,number,string;

当我们在进行基本数据类型的运算和比较时数据类型会根据运算符号和左右两边值的不同作如下转换:

  •  +  运算符
      当我们利用 + 运算符去对字符串和数字进行计算时加法运算符会自动把数字转换成字符串进行运算
      1. string+string
            "a"+"b"="ab"
            "1"+"2"="12"
       2. number+number
               1+2=3
            3. string+number
            "a"+1="a1"
               "1"+2="12"
  • -  , * , / ,因为这三种运算符的运算方式一样固写在了一起(进行如下验证)

           1. string(-  , * , /)string
                   "a"-"b"=NaN;     "a"*"b"=NaN;      "a"/"b"=NaN;
                ****当字符串为数字时上述运算符会把它先转换成数字再进行计算        
                    "1"-"2"=-1;       "1"*"2"=-1;         "1"/"2"=0.5;
              2. number(+,-  , * , /)number
                 在number之间计算时所有运算符都会遵循正常的数学算法进行计算
                 3. string(-  , * , /)number
                    "a"-1=NaN;           "a"*1=NaN;         "a"/1=NaN; 
                "1"-2=-1;             "1"*2=-1;         "1"/2=0.5;
                    有时会认为把数据类型换下位置会出现不同结果吗会不会在进行计算时候运算符会根据前面的运算类型去改变后面的类型那?
               1-"a"=NaN;
          ****因为在进行上述3种运算符运算时是不会像+运算符一样会对类型进行相应转换后再进行计算。

  •  >,< 运算符
       1. string(>,<)string
                "a">"b" false ;    "a"<"b" true ;
                "a">"1"  true;
                *** 都是字符串在进行比较时候字符串会根据自己的ascii码进行比较但同时要注意字符串在进行比较的时候是区分大小写的
                "a">"A"   false;    "A">"a" true;     
        2. number(>,<)number
                根据数学运算法则进行比较
             3. string(>,<)number
             1>"a" false;        1<"a"  false;
               1>"2" false;        1<"2" true;
                 ****当数字和字符串进行比较的时候都会强制转换成字符串进行比较。
             ****当Number('a')的时候会被转换成NaN,翻一下资料你就会知道NaN 与任何数进行比较返回的结果都为false;
  • ==和===
             1. string(==,===)string
                "a"=="a"  true ;    "a"==="a"  true ;
                "1"=="1"  true ;   "1"==="1" true ;
              2. number(==,===)number
                 1==1 true ;    1===1 true;
              3. string(==,===)number
                 a=="a"  true;        a==="a"  false;
                 1=="1"  true;         1==="1"  false;
                 ****在字符串和字符串,数字和数字类型比较不论==和===返回都为true,为什么字符串和数字类型进行比较会出现false?
                   在进行==比较的时候如果一个是数字另一个是字符串,先将字符串转换成数字,然后在进行比较。
                       ===在js被称作严格相等,在进行两值比较的时候不会进行类型转换当两值类型不同则他们不相等
                 ****在这里要注意:
                         null==undefind  true;          null===undefind  false;
                     NaN==NaN      false;           NaN===NaN       false;
                         NaN在与任何值进行比较的时候都为false;

     

JavaScript基本类型比较的更多相关文章

  1. JavaScript事件类型

    JavaScript事件类型 Web浏览器中可能发生的事件有很多类型.这里我将主要将下面几种常用的事件类型: UI事件 焦点事件 鼠标与滚轮事件 键盘与文本事件 复合事件 变动事件 HTML5事件 设 ...

  2. Flow: JavaScript静态类型检查工具

    Flow: JavaScript静态类型检查工具 Flow是Facebook出品的,针对JavaScript的静态类型检查工具.其代码托管在github之上,并遵守BSD开源协议. 关于Flow 它可 ...

  3. javascript 操作符类型隐性转换

    javascript 操作符类型隐性转换 (一).一元操作符只能操作一个值的操作符叫做一元操作符1.递增和递减操作符a. 在应用于一个包含有效数字字符的字符串时,先将其转换为数字值,再执行加减1的操作 ...

  4. javascript学习-类型判断

    javascript学习-类型判断 1.类型判断的的武器 javascript中用于类型判断的武器基本上有以下几种: 严格相等===,用来判断null,undefined,true,false这种有限 ...

  5. JavaScript的类型自动转换高级玩法JSFuck

    0 前言 最开始是不小心在微信公众号(程序员大咖)看到一篇JS的高逼格代码,然后通过里面的链接跳转到了JSFuck的wiki,就像顺着迷宫找宝藏的感觉,感叹JS的自动类型转换的牛逼. 1 样例 (!( ...

  6. 面向对象的JavaScript --- 动态类型语言

    面向对象的JavaScript --- 动态类型语言 动态类型语言与面向接口编程 JavaScript 没有提供传统面向对象语言中的类式继承,而是通过原型委托的方式来实现对象与对象之间的继承. Jav ...

  7. javascript 字典类型的使用

    javascript  字典类型的使用 1.使用Array: var arr = new Array(); arr["zs"] = "zhangsan"; ar ...

  8. javascript变量类型及作用域

    javascript变量类型及作用域 一.简介 变量类型 ECMAScript变量可能包含两种不同类型的数据值:基本类型和引用类型. 基本类型 基本类型指的是简单的数据段,5种基本数据类型:undef ...

  9. js课程 1-3 Javascript变量类型详解

    js课程 1-3  Javascript变量类型详解 一.总结 一句话总结:js对象点(属性方法),json对象冒号(属性方法).属性和方法区别只有一个括号. 1.json对象中的函数的使用? 函数名 ...

  10. JavaScript 基础类型,数据类型

    1.基础类型:undefined,null,Boolean,Number,String,Symbol Undefined类型:一个没有被赋值的变量会有个默认值undefined; Null类型:nul ...

随机推荐

  1. BFS和DFS详解

    BFS和DFS详解以及java实现 前言 图在算法世界中的重要地位是不言而喻的,曾经看到一篇Google的工程师写的一篇<Get that job at Google!>文章中说到面试官问 ...

  2. 【July】从头到尾彻底理解KMP

    从头到尾彻底理解KMP 作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进. 1. 引言 本KMP原文最初写于2年多前的2011 ...

  3. 玩下Javascript

    玩下Javascript 前言 好久没有更新博客了,也蛮少捣弄javascript,今儿看到一个题目,关于给你一个面板,你可以随意的在上面画矩形,可以移动和删除任意一个你创建的矩形,心血来潮搞着玩哈, ...

  4. ASP.NET Web API下的HttpController激活:程序集的解析

    ASP.NET Web API下的HttpController激活:程序集的解析 HttpController的激活是由处于消息处理管道尾端的HttpRoutingDispatcher来完成的,具体来 ...

  5. Window Service 计划任务

    在ASP.NET中创建计划任务,就我个人而言,用过两种方式,一种是用SQL Server创建,把写好的SSIS包导入SQL Server创建的任务中,设置好时间让它去执行.还有一种就是利用window ...

  6. 原生javascript-图片按钮切换

    原生javascript-图片按钮切换 即上次被分配写原生JS相册弹窗后,这次又接到了写原生JS,图片按钮切换,真激情: 个人在线实例:http://www.lgyweb.com/picSwitch/ ...

  7. 使用 javascript 来实现 观察者模式

    以[猫叫.老鼠跑.主人醒]为例子,使用 javascript 来实现 观察者模式 (有在线演示) 2013-06-24 08:35 by 金色海洋(jyk)阳光男孩, 572 阅读, 4 评论, 收藏 ...

  8. 解决Eclipse一直loading workbench无法启动的问题

    不知怎地,Eclipse始终停留在Loading workbench状态.反复重启,状态依旧.尝试解决. 停止时显示的状态:”Loading workbench”,看来和这个workbench插件有关 ...

  9. 如何Windows系统中搭建php环境

    PHP介绍: PHP 独特的语法混合了C.Java.Perl以及PHP自创的语法.它可以比CGI或者Perl更快速地执行动态网页.用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTM ...

  10. ETL的经验总结

    ETL的考虑        做数据仓库系统,ETL是关键的一环.说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具.回忆一下工作这么些年来,处理数据迁移.转换的工作倒还真的不少.但是那些工作基 ...