javaScript = == ===的区别
“=” 简单的赋值号
“==” 判断值是否相同不涉及类型
如果两个值类型相同,进行 === 比较。
如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
如果一个是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 = == ===的区别相关推荐
- JS中的函数概念和C语言的概念是类似的,c语言和JavaScript的区别有哪些?
c语言和JavaScript在语法结构上有很多相似(例如if条件语句.while循环.switch语句.do-while循环等),那么它们之间有什么不同?下面本篇文章就来给大家介绍一下c语言和Java ...
- java和javascript的区别(html和javascript的区别)
java与javascript有什么区别 java是高级的面向对象语言.. javascript只是浏览器的一种脚本语言 两者差别很大,根本不是一个概念!不要被里面包含"java" ...
- [JavaScript] script type=text/javascript /script 和script language=javascript /script区别
language="javascript" 和type="text/javascript"的区别 (1)<script language="ja ...
- 空链接,a标签herf属性,href=“#” 或者 href=“javascript:void(0);” 或者href=“javascript:;“ 区别
目录 # 包含了一个位置信息,默认的锚是 #top 也就是网页的上端. href="javascript:void(0);" 和 href="javascript:;&q ...
- C语言、JAVA与JavaScript的区别
一.C语言和JavaScript的区别 1.什么是C语言 C语言是一门面向过程.抽象化的通用程序设计语言,广泛应用于底层开发.C语言能以简易的方式编译.处理低级存储器.C语言是仅产生少量的机器语言以及 ...
- jquery和javascript的区别(转载自脚本之家)
jquery 就对javascript的一个扩展,封装,就是让javascript更好用,更简单,为了说明区别,下面与大家分享下JavaScript 与JQuery 常用方法比较 jquery 就对j ...
- javascript php 区别,PHP 或者 JavaScript 这些弱类型 的|| 和 | 的区别, 附代码;
下面是实验代码:用php 写的,JavaScript应该也差不多: 我发现,php 和 JavaScript 差多了! 我附加 运行结果 和 代码: 区别 | || or \& \& ...
- JQuery 和JavaScript的区别
jQuery能大大简化Javascript程序的编写,我最近花时间了解了一下jQuery,把我上手过程中的笔记和大家分享出来,希望对大家有所帮助. 要使用jQuery,首先要在HTML代码最前面加上对 ...
- Node.js与JavaScript的区别?
node.js是什么? Node.js是一个Javascript运行环境(runtime). Node.js与JavaScript的区别是什么? 本质: Javascript是一种web前端语言,主要 ...
最新文章
- html三个div相同高度,如何使用jquery保持多个div的高度相同?
- poj 3660 Cow Contest
- 最大连续子序列乘积(DP)
- stm32官方例程在哪找_正点原子Linux第十一章模仿STM32驱动开发格式实验
- 关于思科三层交换机设置中继链路(trunk)报错!
- linux ntp同步日志,Linux使用入门教程之Rsyslog日志管理、NTP和Rsync备份同步
- java 蓝桥杯历届试题 分糖果(题解)
- matlab可视化大学物理学_传输矩阵法在大学物理波动光学教学中的应用
- 写了10年Javascript未必全了解的标识符顺序
- indigo中用roslaunch启动RViz观察机器人模型
- Java BufferedReader
- element form 变 table
- PageStateLayout
- C++课程设计班级管理系统
- 温度检测单片机c语言程序设计,基于STC89C52单片机的温度检测系统设计
- 【优亿 Android前线快报】 第76期
- php工具箱升级MySQL
- 科创板IPO申报期间新增技术认定,研发费用真实性被质疑,这公司注册阶段终止审核
- 颠覆你的世界观-芝诺悖论
- [云原生专题-1]:总体-云原生初步探究,什么是云原生,云原生的基本特性
热门文章
- IPTV视频码流分析
- 软件项目需求调研报告模板下载_需求调研规范
- 判断文件是否损坏_Bash技巧:把变量赋值为换行符,判断文件是否以换行符结尾...
- 使用阿里云镜像仓库构建国外 Docker 镜像
- 【编辑器】VSCode+TEXLIVE环境配置,以SJTUthesis为测试用例
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南):签到题CDGM
- 合并多个txt文件到一个
- 计算机不能打开管理员用户输入窗口,win10系统管理员账户无法打开某些程序的设置技巧...
- android gettext方法,方法getText()必须从UI线程(Android Studio)调用
- 计算一个连通分量中节点的个数的两种方法