运算符===和==的区别

本文详细解析了PHP中的恒等计算符===与比较运算符号==的区别,通过实例展示了如何正确使用它们来判断变量类型与值。

区别:

===是恒等计算符   同时检查表达式的值与类型

==是比较运算符号  不会检查条件式的表达式的类型

举例

if (strstr($new_url,'http://') === false) {}//

NULL,FALSE,array(),"",0,"0"这几个值如果用==他们是相等的,

判断出某个值真正的返回值呢,就可以用 ===$a = 0;(数值)$b = FALSE;(布尔)$a === FALSE (类型不一样)不成立

$b === FALSE(类型一样)成立

由于==不会检查条件式的表达式类型

所以

0即是数值0,也是布尔FALSE,==不强制类型一致性,故以下:

$a == FALSE 和 $b == FALSE都成立===的用途

PHP某些内置函数成功会返回数值还有" "、0之类的空值,失败会返回false,

用==符号无法判断,而用===就可以判断出来,它区分了返回值的值及类型。

### JavaScript 中 `==` `===` 运算符区别 在 JavaScript 中,存在两种类型的相等运算符:严格相等 (`===`) 宽松相等 (`==`)。 #### 严格相等 (`===`) 严格相等比较不仅检查数值是否相同,还会验证数据类型是否一致。只有当两者都匹配时才会返回 `true`[^2]。 ```javascript 1 === 1 // true, 数字等于数字 "hello" === "hello" // true, 字符串等于字符串 null === null // true, 特殊值之间相互比较 undefined === undefined // true, 不同于任何其他类型 0 === -0 // true, 负零被视为正零 [] === [] // false, 即使内容一样也因引用不同而异 var obj1 = {}; var obj2 = obj1; obj1 === obj2 // true, 同一对象实例 ``` #### 宽松相等 (`==`) 相比之下,宽松相等允许跨类型转换后再作对比。这意味着即使两边的数据类型不一样也可能被认为是“相等”的。然而这种行为有时会产生意想不到的结果,并且其内部逻辑较为复杂不易记忆[^1]。 ```javascript '' == '0' // false, 空字符串不会被视作数字字符'0' 0 == '' // true, 零可以隐式转为空字符串 0 == '0' // true, 整数能与表示它的字符串互换 false == 'false'// false, 布尔值不自动映射到特定字符串形式 false == '0' // true, 假布尔可视为整数零 false == undefined // false, 未定义不是假值 false == null // false, 空也不是假值 null == undefined // true, 二者均代表缺失值 '\t\r\n ' == 0 // true, 白空间隔会被解析成数值零 ``` 为了保持代码清晰性减少潜在错误,建议优先采用严格相等(`===`)来进行条件判断。这有助于避免由于意外类型转换所引起的困惑问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值