“=” 简单的赋值号

“==” 判断值是否相同不涉及类型

如果两个值类型相同,进行 === 比较。 
如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较: 
如果一个是null、一个是undefined,那么[相等]。 
如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。 
如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。 
如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核 心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我 也不大懂) 
任何其他组合,都[不相等]。

“===” 判断值相同而且类型相同

如果类型不相同,那么就不相等。(至少其中一个是nan 那么不相等) 判断一个值是否是nan 只能用isNaN()来判断

javaScript  几种特殊的类型

typeof操作符

  介于JavaScript是松散类型的,因此需要有一种手段来检测给定变量的数据类型——typeof就是负责提供者方面信息的操作符。对一个值使用typeof操作符可能返回下列某个字符串:

  ● "undefined"——如果这个值未定义;

  ● "boolean"——如果这个值是布尔值;

  ● "string"——如果这个值是字符串;

  ● "number"——如果这个值是数值;

  ● "object"——如果这个值是对象或null;

  ● "function"——如果这个值是函数;

Object的每个实例都具有下列属性和方法:

  ● constructor——保存着用于创建当前对象的函数

  ● hasOwnProperty(propertyName)——用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如:o.hasOwnProperty("name"))

  ● isPrototypeOf(object)——用于检查传入的对象是否是另一个对象的原型

  ● propertyIsEnumerable(propertyName)——用于检查给定的属性是否能够使用for-in语句来枚举

  ● toString()——返回对象的字符串表示

  ● valueOf()——返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。

Number类型

  这种类型用来表示整数和浮点数值,还有一种特殊的数值,即NaN(非数值 Not a Number)。这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0都会导致错误,从而停止代码执行。但在JavaScript中,任何数值除以0会返回NaN,因此不会影响其他代码的执行。

  NaN本身有两个非同寻常的特点。首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN与任何值都不相等,包括NaN本身。例如,下面的代码会返回false。

alert(NaN == NaN);    //false

有3个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。第一个函数,即转型函数Number()可以用于任何数据类型,而另外两个函数则专门用于把字符串转换成数值。这3个函数对于同样的输入会返回不同的结果。

  Number()函数的转换规则如下:

  ● 如果是Boolean值,true和false将分别被替换为1和0

  ● 如果是数字值,只是简单的传入和返回

  ● 如果是null值,返回0

  ● 如果是undefined,返回NaN

  ● 如果是字符串,遵循下列规则:

   ○ 如果字符串中只包含数字,则将其转换为十进制数值,即”1“会变成1,”123“会变成123,而”011“会变成11(前导的0被忽略)

   ○ 如果字符串中包含有效的浮点格式,如”1.1“,则将其转换为对应的浮点数(同样,也会忽略前导0)

   ○ 如果字符串中包含有效的十六进制格式,例如”0xf“,则将其转换为相同大小的十进制整数值

   ○ 如果字符串是空的,则将其转换为0

   ○ 如果字符串中包含除了上述格式之外的字符,则将其转换为NaN

  ● 如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再依次按照前面的规则转换返回的字符串值。

    var num1 = Number("Hello World");    //NaNvar num2 = Number("");                //0var num3 = Number("000011");        //11var num4 = Number(true);            //1

  由于Number()函数在转换字符串时比较复杂而且不够合理,因此在处理整数的时候更常用的是parseInt()函数。parseInt()函数在转换字符串时,更多的是看其是否符合数值模式。它会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符串不是数字字符或者负号,parseInt()会返回NaN;也就是说,用parseInt()转换空字符串会返回NaN。如果第一个字符是数字字符,praseInt()会继续解析第二个字符,知道解析完所有后续字符或者遇到了一个非数字字符。例如,"1234blue"会被转换为1234,”22.5“会被转换为22,因为小数点并不是有效的数字字符。

  如果字符串中的第一个字符是数字字符,parseInt()也能够识别出各种整数格式(即十进制、八进制、十六进制)。为了更好的理解parseInt()函数的转换规则,下面给出一些例子

    var num1 = parseInt("1234blue");    //1234var num2 = parseInt("");            //NaNvar num3 = parseInt("0xA");            //10(十六进制)var num4 = parseInt("22.5");        //22var num5 = parseInt("070");            //56(八进制)var num6 = parseInt("70");            //70var num7 = parseInt("10",2);        //2(按二进制解析)var num8 = parseInt("10",8);        //8(按八进制解析)var num9 = parseInt("10",10);        //10(按十进制解析)var num10 = parseInt("10",16);        //16(按十六进制解析)var num11 = parseInt("AF");            //56(八进制)var num12 = parseInt("AF",16);        //175

  与parseInt()函数类似,parseFloat()也是从第一个字符(位置0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。例如,”22.34.5“将会被转换成22.34。

  parseFloat()和parseInt()的第二个区别在于它始终都会忽略前导的零。由于parseFloat()值解析十进制值,因此它没有用第二个参数指定基数的用法。

    var num1 = parseFloat("1234blue");    //1234var num2 = parseFloat("0xA");        //0var num3 = parseFloat("22.5");        //22.5var num4 = parseFloat("22.34.5");    //22.34var num5 = parseFloat("0908.5");    //908.5

转载于:https://www.cnblogs.com/VzhanggengD/p/6475298.html

javaScript = == ===的区别相关推荐

  1. JS中的函数概念和C语言的概念是类似的,c语言和JavaScript的区别有哪些?

    c语言和JavaScript在语法结构上有很多相似(例如if条件语句.while循环.switch语句.do-while循环等),那么它们之间有什么不同?下面本篇文章就来给大家介绍一下c语言和Java ...

  2. java和javascript的区别(html和javascript的区别)

    java与javascript有什么区别 java是高级的面向对象语言.. javascript只是浏览器的一种脚本语言 两者差别很大,根本不是一个概念!不要被里面包含"java" ...

  3. [JavaScript] script type=text/javascript /script 和script language=javascript /script区别

    language="javascript" 和type="text/javascript"的区别 (1)<script language="ja ...

  4. 空链接,a标签herf属性,href=“#” 或者 href=“javascript:void(0);” 或者href=“javascript:;“ 区别

    目录 # 包含了一个位置信息,默认的锚是 #top 也就是网页的上端. href="javascript:void(0);" 和 href="javascript:;&q ...

  5. C语言、JAVA与JavaScript的区别

    一.C语言和JavaScript的区别 1.什么是C语言 C语言是一门面向过程.抽象化的通用程序设计语言,广泛应用于底层开发.C语言能以简易的方式编译.处理低级存储器.C语言是仅产生少量的机器语言以及 ...

  6. jquery和javascript的区别(转载自脚本之家)

    jquery 就对javascript的一个扩展,封装,就是让javascript更好用,更简单,为了说明区别,下面与大家分享下JavaScript 与JQuery 常用方法比较 jquery 就对j ...

  7. javascript php 区别,PHP 或者 JavaScript 这些弱类型 的|| 和 | 的区别, 附代码;

    下面是实验代码:用php 写的,JavaScript应该也差不多: 我发现,php 和 JavaScript 差多了! 我附加 运行结果 和 代码: 区别 | || or \& \& ...

  8. JQuery 和JavaScript的区别

    jQuery能大大简化Javascript程序的编写,我最近花时间了解了一下jQuery,把我上手过程中的笔记和大家分享出来,希望对大家有所帮助. 要使用jQuery,首先要在HTML代码最前面加上对 ...

  9. Node.js与JavaScript的区别?

    node.js是什么? Node.js是一个Javascript运行环境(runtime). Node.js与JavaScript的区别是什么? 本质: Javascript是一种web前端语言,主要 ...

最新文章

  1. html三个div相同高度,如何使用jquery保持多个div的高度相同?
  2. poj 3660 Cow Contest
  3. 最大连续子序列乘积(DP)
  4. stm32官方例程在哪找_正点原子Linux第十一章模仿STM32驱动开发格式实验
  5. 关于思科三层交换机设置中继链路(trunk)报错!
  6. linux ntp同步日志,Linux使用入门教程之Rsyslog日志管理、NTP和Rsync备份同步
  7. java 蓝桥杯历届试题 分糖果(题解)
  8. matlab可视化大学物理学_传输矩阵法在大学物理波动光学教学中的应用
  9. 写了10年Javascript未必全了解的标识符顺序
  10. indigo中用roslaunch启动RViz观察机器人模型
  11. Java BufferedReader
  12. element form 变 table
  13. PageStateLayout
  14. C++课程设计班级管理系统
  15. 温度检测单片机c语言程序设计,基于STC89C52单片机的温度检测系统设计
  16. 【优亿 Android前线快报】 第76期
  17. php工具箱升级MySQL
  18. 科创板IPO申报期间新增技术认定,研发费用真实性被质疑,这公司注册阶段终止审核
  19. 颠覆你的世界观-芝诺悖论
  20. [云原生专题-1]:总体-云原生初步探究,什么是云原生,云原生的基本特性

热门文章

  1. IPTV视频码流分析
  2. 软件项目需求调研报告模板下载_需求调研规范
  3. 判断文件是否损坏_Bash技巧:把变量赋值为换行符,判断文件是否以换行符结尾...
  4. 使用阿里云镜像仓库构建国外 Docker 镜像
  5. 【编辑器】VSCode+TEXLIVE环境配置,以SJTUthesis为测试用例
  6. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南):签到题CDGM
  7. 合并多个txt文件到一个
  8. 计算机不能打开管理员用户输入窗口,win10系统管理员账户无法打开某些程序的设置技巧...
  9. android gettext方法,方法getText()必须从UI线程(Android Studio)调用
  10. 计算一个连通分量中节点的个数的两种方法