php 三个等号与两个等号,浅析JavaScript和PHP中三个等号(===)和两个等号(==)的区别...
本文,米扑博客总结 JavaScript和PHP中三个等号(===)和两个等号(==)的区别
== equality 等同(值比较)
=== identity 恒等(值和类型都比较)
== 两边值类型不同的时候,要先进行类型转换,再比较数值。
=== 不做类型转换,类型不同的一定不等,类型相同再比较数值。
举例说明:
两个等号(值比较)
"1" == true
类型不同,"=="将先做类型转换,把true转换为1,即为 "1" == 1;
此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1;
此时,"==" 左右两边的类型都为数值型,比较成功!
三个等号(类型和值都比较)
如果比较:"1" === true 左侧为字符型,右侧为bool布尔型,左右两侧类型不同,结果为false;
如果比较:"1" === 1 左侧为字符型,右侧为int数值型,左右两侧类型不同,结果为false;
如果比较: 1 === 1 左侧为int数值型,右侧为int数值型,左右两侧类型相同,数值大小也相同,结果为true;
如果比较: 1 === 2 左侧为int数值型,右侧为int数值型,左右两侧类型相同,但数值大小不同,结果为false;
小结
"==" 只要求值相等;
"===" 要求值和类型都相等
深入的剖析"=="和"==="区别
先说三个等号 ===,比较简单,具体比较规则如下:
1、如果类型不同,就不相等
2、如果两个都是数值,并且是同一个值,那么相等;(!例外)的是,如果其中至少一个是NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
3、如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4、如果两个值都是true,或者都是false,那么[相等]。
5、如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6、如果两个值都是null,或者都是undefined,那么[相等]。
再说两个等号 ==,具体比较规则如下:
1、如果两个值类型相同,进行 === 比较,比较规则同上
2、如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
a、如果一个是null、一个是undefined,那么[相等]。
b、如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
c、如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
d、如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂)
e、任何其他组合(array数组等),都[不相等]。
举例说明:
"1" == true
类型不等,true会先转换成数值 1,现在变成 "1" == 1,再把"1"转换成 1,比较 1 == 1, 相等。
= 赋值运算符
== 等于
=== 严格等于
例:
var a = 3;
var b = "3";
a==b 返回 true// 值比较
a===b 返回 false// 类型和值都比较
因为a,b的类型不一样 === 用来进行严格的比较判断类型(不同)和值(相同),结果仍为 false (类型不同)
代码示例:
var priceOfApple = "3元"; // 苹果的价格
var priceOfBanana = "3.5元"; // 香蕉的价格
priceOfApple = parseInt ( priceOfApple ); // 解析苹果的价格
var priceOfBanana2 = parseInt ( priceOfBanana ); // 解析香蕉的价格
if( ( priceOfApple === 3 ) && ( priceOfBanana2 === 3 ) && ( parseFloat ( priceOfBanana ) === 3.5 ) )
{
alert( "苹果的价格: " + priceOfApple
+ "/n香蕉的价格的整数部分: " + priceOfBanana2
+ "/n香蕉的价格: " + parseFloat( priceOfBanana ) );
}
参考推荐:
php 三个等号与两个等号,浅析JavaScript和PHP中三个等号(===)和两个等号(==)的区别...相关推荐
- 浅析JavaScript和PHP中三个等号(===)和两个等号(==)的区别
首先,先做个简单的介绍,让先有个直观的认识 == equality 等同 === identity 恒等 == 两边值类型不同的时候,要先进行类型转换,再比较. === 不做类型转换,类型不 ...
- python两列相乘_如何将pandas中具有不同索引的两列相乘?
注意-只有当符号的所有值都相同且两个日期时间的顺序相同时,解决方案才有效.在df = df.set_index('Symbo', append=True) df['New.Cap'] = (df['C ...
- 在java程序中定义的类有两种成员_java试题 急需答案 谢谢!!!
三.填空(每小题2分,共10分)1.在Applet中,创建一个具有10行45列的多行文本区对象ta的语句为:2.创建一个标识有"关闭"字样的标签对象gb的语句为.3.方法是一种仅有 ...
- java中三个等号_Java细节:单等于号、双等于号、三等于号的作用及双等于号和equls的区别...
我们在编程时总是会用到=或==,但是等于号都有什么作用呢?下面我们来看一下 (注:下文会提及一点常量池.堆栈,由于本人了解还不是透彻,暂不做解释,日后会做总结,可先点击字面查看理解) 一.单等于号的作 ...
- 两个维护 提升三服务器,王莉霞:以整改成效践行“两个维护”立足“事要解决”抓好“三访结合”...
王莉霞在听取市委班子专题民主生活会问题整改和中央第八巡视组下沉我市指出问题及交办信访案件解决情况汇报会上强调 以整改成效践行"两个维护" 立足"事要解决"抓好& ...
- jquery 文件上传 触发两次_点击三次input按钮,前两次不选择任何文件,第三次选择一个文件,结果上传了3个文件,即发生了三次请求...
点击三次input按钮,前两次不选择任何文件,第三次选择一个文件,结果页面上出现了3个文件,也就是上传了3个文件 我点击input,不选择任何文件,然后取消文件选择器的窗口,然后第二次次点击input ...
- java. 三个人比赛怎么写_两个乒乓球队进行比赛,找出三队赛手的名单
[java]代码库import java.util.ArrayList; /** * 两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛 ...
- 乒乓球比赛 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比 请编程序找出三队赛手的名单。
//:两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人. //已抽签决定比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比 //,请编程序找出三队赛手 ...
- 未来混合云的发展可能有两个方向 | 5G技术研发试验第三阶段规范正式发布
每一个企业级的人 都置顶了 中国软件网 中国软件网 为你带来最新鲜的行业干货 小编点评 我们一直很期待 未来的混合云将会是什么样子 形式会很多变 但是一定会让我们的工作 更加方便的 趋势洞察 张鑫 ...
最新文章
- wxWidgets:wxFontPickerCtrl类用法
- android工程创建,3.2.1 创建Android 项目(2)
- jQuery自定义漂亮的下拉框插件8种效果演示
- yum仓库、源以及编译安装笔记
- java8新特性_Java8新特性_lambda表达式
- c语言1颗*到5颗*,刚学c语言,老师让用if编一个五个数字从大到小的排序,有那个大神能帮我,谢谢啦...
- 图片太大_图片太大?手把手教你如何用java实现一个高质量图片压缩程序
- IntelliJ IDEA :解决idea导入项目爆红
- 圆环和环形是一样的吗_EXCEL圆环图与柱形图的组合
- java动态代理实现与原理详细分析(【转载】By--- Gonjan )
- 可以悬浮在屏幕的搜题软件_悬浮窗搜题app下载-悬浮窗搜题预约 安卓版v1.0.0-PC6安卓网...
- TCP客户端与服务器的实现
- 残缺、时间一起的爱情
- 小字体小行高兼容性分析及差异解决办法
- oc55--ARC单个对象的内存管理
- 常见的分布期望及其方差
- 酒诗词之一(七言诗)
- 怒爬某破Hub站资源,只为撸这个鉴黄平台!
- 2019年全国职业院校技能大赛中职组“网络空间安全”正式赛卷及其“答案”
- 微信小程序:获取用户手机号