js里面的等于号--
一个是赋值等于号,二个是对比等于号,那么三个等于号是什么用的呢
有时候会看到在判断两个对象是否相等的时候使用了三个等号(===),它和两个等号(==)有什么区别呢?简单来说就是使用“==”时,如果两边类型不同,js引擎会把它们转换成相同类型然后在进行比较,而“===”则不会进行类型转换,因此当两边不是属于同一个类型,肯定不相等。例如:
| 代码如下 | 复制代码 |
|
var a = 0, b = '0'; alert((a == b) + '--' + (a === b))此时看到的结果为“true–false”。 |
|
=== 判断规则
如果类型不同,就[不相等] 如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断) 如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。 如果两个值都是true,或者都是false,那么[相等]。 如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。 如果两个值都是null,或者都是undefined,那么[相等]。 == 判断规则:
如果两个值类型相同,进行 === 比较。 如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较: 如果一个是null、一个是undefined,那么[相等]。 如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。 如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。 如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂) 任何其他组合(array数组等),都[不相等]。
特别需要注意的是true、false的转换,例如:
| 代码如下 | 复制代码 |
|
alert(true == 1); //ture alert(true == 2); //false, true会转换成number,也就是1,当然 1 不等于 2 //可以使用 !! 来把一个数据类型转换为boolean型 alert(true == !!2) //true,!2 === false !(!=2) = !false = true |
|
另外在js中,如果把一个变量用在逻辑运算中,那么变量在无初始值或者其值为 0、-0、null、”"、false、undefined 或者 NaN时,它的值为 false。否则,其值为 true
那么三个等于号与二个等于号之间的区别在哪里
首先,先做个简单的介绍,让先有个直观的认识
== equality 等同 === identity 恒等
== 两边值类型不同的时候,要先进行类型转换,再比较。 === 不做类型转换,类型不同的一定不等。
==先转换类型再比较,===先判断类型,如果不是同一类型直接为false。
===表示恒等于,比较的两边要绝对的相同
运行体会一下以下的代码就会清楚了:
| 代码如下 | 复制代码 |
|
alert(0 == ""); // true alert(0 == false); // true alert("" == false); // true alert(0 === ""); // false alert(0 === false); // false alert("" === false); // false |
|
js里面的等于号--的更多相关文章
- js函数前加分号和感叹号的作用
js函数前加分号和感叹号是什么意思?有什么用? 一般看JQuery插件里的写法是这样的 (function($) { //... })(jQuery); 今天看到bootstrap的javascrip ...
- Oracle中的不等于号
今天碰到一个Oracle不等于的问题,最后搜索了一下,发现下面资料,拿来跟大家分享一下 关于Oracle中的不等于号: 在Oracle中, <> != ~= ^= 都是不等于号的意思. ...
- js COOKIE 记住帐号或者uuid
当开始接到这个任务的时候,我对cookie还是没多少了解的,而uuid的生成也是一无所知.但是当你发现这个网址http://stackoverflow.com/questions/105034/how ...
- Yii2查询语句使用不等于号
Yii2 Active Record查询条件使用不等于号,需要使用到 operator format: [operator, operand1, operand2, ...] 运算符格式: [运算符, ...
- Oracle“不等于号”与Nulls的情况(转)
今天突然才发现,Oracle中的“不等于操作符”是忽略null的. 比如,查询comm不等于的500的记录,我会理所当然地使用where comm != 500 预想会返回包含null的不等于500的 ...
- Oracle中奇怪的【不等于号】
Oracle中奇怪的[不等于号] 在Oracle中,不等号有三种:<>,!=,^= 例如: select * from test where name<>'xn'.返回的结 ...
- JS中的单引号和双引号
JS里面的单引号和双引号可以同时使用,但是要遵循一定的准则. 最外面用了双引号了,那么里面就不能再用双引号了,因为引号是成双对的,浏览器读到一个双引号后,到第2个双引号时才算结束:同理,浏览器读到一个 ...
- JSP中EL很常用,怎样使用大于号、小于号、等于号等
JSP中EL很常用,怎样使用大于号.小于号.等于号等 符号 在EL中使用 常规 1 等于 eq == 2 不等于 ne != 3 大于 gt > 4 小于 lt < 5 大于等于 ge ...
- C#中Equals和= =(等于号)的比较)
C#中Equals和= =(等于号)的比较) 相信很多人都搞不清Equals和 = =的区别,只是零星的懂一点,现在就让我带大家来进行一些剖析 一. 值类型的比较 对于值类型来说 ...
随机推荐
- SQL DEVELOPER工具找不到database时的解决
1.配置SQL DEVELOPER管理工具 这里省略Oracle数据库和PL/SQL Developer的安装步骤,注意在安装PL/SQL Developer软件时,不要安装在Program File ...
- linux shutdown关闭系统命令使用介绍(转)
shutdown命令是最常用的关闭系统命令,不仅可以用于立即关闭系统,还可以在指定时间关闭系统 linux关闭系统命令之shutdown 关闭.重启系统 Linux是一个多用户.多任务系统,如果不 ...
- 向table添加水平滚动条
转自:http://www.cnblogs.com/linjiqin/p/3148225.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4. ...
- Windows自带Android模拟器启动失败
Windows自带Android模拟器启动失败 错误信息:[Critical] XDE Exit Code: InvalidArguments (3)XDE执行的第三个参数为设置内存值,形式为/mem ...
- http://love3400wind.blog.163.com/blog/static/7963080120132794359703/
http://love3400wind.blog.163.com/blog/static/7963080120132794359703/
- 数学 Codeforces Round #291 (Div. 2) B. Han Solo and Lazer Gun
题目传送门 /* 水题,就是用三点共线的式子来判断射击次数 */ #include <cstdio> #include <cmath> #include <string& ...
- 最大子矩阵和 URAL 1146 Maximum Sum
题目传送门 /* 最大子矩阵和:把二维降到一维,即把列压缩:然后看是否满足最大连续子序列: 好像之前做过,没印象了,看来做过的题目要经常看看:) */ #include <cstdio> ...
- UVa10779 Collectors Problem(最大流)
很容易想到源点向所类型有贴纸连边,容量为Bob一开始有的数量:然后贴纸向汇点连边,容量为1. 接下来就是交换部分的连边了.注意交换一次一次进行,每次只能交换一张. 交换,是对于两种贴纸而言,仅会发生在 ...
- 【转载自W3CPLUS】如何将页脚固定在页面底部
该文章转载自:W3CPLUS 大漠的文章 http://www.w3cplus.com/css/css-sticky-foot-at-bottom-of-the-page 以下为全文 作为一个Web的 ...
- BZOJ4304 : 道路改建
首先求出SCC,把图缩点成一个DAG. 通过拓扑排序+DP求出: dp0[x]:从x点出发能到的点的集合. dp1[x]:能到x的点的集合. 对于一条边x->y,将它改为双向边后,形成的新的SC ...