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

时间: 2024-11-07 04:22:30

js里面的等于号--的相关文章

Oracle中不等于号问题

在Oracle中,不等于号有以下几种方式:<>,!=,^= 测试SQL create table test( id int, name varchar2(10), age int ) insert into test(id,name,age) values(1,'zhangsan',23); insert into test(id,name,age) values(2,'lisi',''); insert into test(id,name,age) values(3,'wangwu',nul

js实现填写身份证号、手机号、准考证号等信息自动空格的效果

咱们做网站的,用户体验那是相当重要的,比如12306抢票需要填写身份证,如果不空格,密密麻麻的给我一种很压抑的感觉,而且也不容易核对信息是否填写正确,所以我就写了一个利用Js实现填写身份证号.手机号.准考证号等信息自动空格的效果. 为了方便,自已定义的一个简单的get()方法和trim()方法,代码如下: //获取对应的对象--function函数. function get(id) { return document.getElementById(id); } //去掉所有空格--String

Yii2查询语句使用不等于号

Yii2 Active Record查询条件使用不等于号,需要使用到 operator format: [operator, operand1, operand2, ...] 运算符格式: [运算符, 运算对象1, 运算对象2, ...] 演示代码: $details = MovieShows::find()->where(['movie_id'=>$id]) ->andWhere(['location_id'=>$loc_id]) ->andWhere(['<>

三个等于号===和两个等于号==的区别

两个等于号是只判断值是否相等: 三个等于号是即判断值是否相等,又判断类型是否一样: 举例: $str="1"; $num=1; if($str==$num){ print_r('true'); }else{ print_r('false'); } if($str===$num){ print_r('true'); }else{ print_r('false'); } 程序的运行结果是: truefalse 因为在执行第一个if时,php将$str字符串类型转换成数值型,与$num比较:

浅析Oracle中的不等于号

前几天碰到一个关于Oracle不等于的问题,最后搜索了一下,发现下面资料,拿来跟大家分享一下,需要的朋友可以参考下 关于Oracle中的不等于号: 在Oracle中, <> != ~= ^= 都是不等于号的意思.都可以使用. 但是奇怪是的, 我想拿出price不是180000的商品时:(price是Number类型的) SELECT id, name FROM product where price<> 180000; 执行这个语句时,priceis null 的记录不出来.也就是

Oracle中奇怪的【不等于号】

Oracle中奇怪的[不等于号] 在Oracle中,不等号有三种:<>,!=,^= 例如: select * from test where name<>'xn'.返回的结果是name不为xn,且name不空的记录.但是这与我们想要得到的结果有出入,因为我们的目的是得到name为xn的全部记录,当然这也包括name为空的记录,所以这些写SQL语句是有问题的.为了解决这个问题,我们可以采用以下两种方案: select * from test where instr(concat(na

C#中Equals和= =(等于号)的比较)(转载)

C#中Equals和= =(等于号)的比较) 相信很多人都搞不清Equals和 = =的区别,只是零星的懂一点,现在就让我带大家来进行一些剖析 一.           值类型的比较 对于值类型来说  两者比较的都是"内容"是否相同,即 值 是否一样,很显然此时两者是划等号的. 例: int i = 9; int j = 9; Console.WriteLine("Equals和= =(等于号)的比较"); Console.WriteLine("i.Equ

Oracle“不等于号”与Nulls的情况(转)

今天突然才发现,Oracle中的“不等于操作符”是忽略null的. 比如,查询comm不等于的300的记录,我会理所当然地使用where comm != 300 预想会返回包含null的不等于300的记录(意识里认为null也是“不等于30”的其中一种情况). 而实际上,它只返回不为null且不等于300的记录,见如下测试. 使用SCOTT的公共数据测试: --All data select * from scott.emp t; --Not equal 300(Not contain null

Oracle“不等于号”与Null的情况

今天突然才发现,Oracle中的“不等于操作符”是忽略Null的. 比如,查询comm不等于的300的记录,我会理所当然地使用where comm != 300 预想会返回包含Null的不等于300的记录(意识里认为Null也是“不等于30”的其中一种情况). 而实际上,它只返回不为Null且不等于300的记录,见如下测试. 使用SCOTT的公共数据测试: --All data select * from scott.emp t; --Not equal 300(Not contain null