我们都知道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. HttpActionDescriptor,ASP.NET Web API又一个重要的描述对象

    HttpActionDescriptor,ASP.NET Web API又一个重要的描述对象 通过前面对“HttpController的激活”的介绍我们已经知道了ASP.NET Web API通过Ht ...

  2. JS简单验证密码强度

    <input type="password" id="password" value=""/><button id=&qu ...

  3. C语言和C++篇

    C语言和C++篇 基本上所有主流的编程语言都有String的标准库,因为字符串操作是我们每个程序员几乎每天都要遇到的.想想我们至今的代码,到底生成和使用了多少String!标题上所罗列的语言,可以看成 ...

  4. Google photos -- reverse thinking

    As a hacker, do the hacking. Here I mean the [hacker](http://en.wikipedia.org/wiki/Hacker_(term) ) . ...

  5. 谷歌、flick网站图片 一次性下载 javaWeb项目 多线程下载,

    源码下载:http://download.csdn.net/detail/liangrui1988/5760473

  6. Python学习入门基础教程(learning Python)--2.3.3Python函数型参详解

    本节讨论Python下函数型参的预设值问题. Python在设计函数时,可以给型参预设缺省值,当用户调用函数时可以不输入实参.如果用户不想使用缺省预设值则需要给型参一一赋值,可以给某些型参赋值或不按型 ...

  7. 如何实现自己的ClassLoader

    摘自深入分析java web技术内幕

  8. 使用 IDEA 创建 Maven Web 项目 (四)- 让 WEB 应用跑起来

    在 IDEA 中配置 Tomcat 单击 IDEA 工具栏上的 Edit Configurations... (在一个下拉框中),弹出 Run/Debug Configurations 对话框. 单击 ...

  9. CSS3高级

    一.学习目标 二.box-sizing属性 语法:box-sizing: content-box|border-box|inherit box-sizing属性的用法: box-sizing属性可以为 ...

  10. 蓝桥杯 C语言 入门训练 Fibonacci数列

    问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...