版权声明:每次关键时刻我都会掉链子,我知道重要时刻我都会发挥失常,所以我会付出150%的努力,即使只能发挥60%水平,也能拿到90分! https://blog.csdn.net/qq_16371909/article/details/84878980
最近PHP编码时使用到==
比较符,发现和JS有一些差别,做记录防止混肴。
先看PHP中的例子:
$a=0;
$b='0str';
$c='1str';
if($a==$b){
echo true;
}else{
echo false;
}
if($a==$c){
echo true;
}else{
echo false;
}
输出结果分别是true
和false
,原因是PHP将字符串转换为数值类型时可以将前面的数值部分(必须数字打头)提取出来当作转化结果,所以0str
被转化为0
,1str
被转化为1
。
如果在javascript中,则有所不同了。看例子:
const a=0;
const b="0str";
const c="1str";
const d=1;
const e=123;
const f="123";
a==b ? console.log(true) : console.log(false);
a==c ? console.log(true) : console.log(false);
c==d ? console.log(true) : console.log(false);
e==f ? console.log(true) : console.log(false);
输出结果则是false
|false
|false
|true
,js在字符串转换为数值的时候,把其当作一个整体,不会进行类似parseInt
之类的操作。所以0str
和1str
转化的值都是NaN
。因此第一行输出false。
虽然不同语言之间用法不同没必要大惊小怪,但是对于经常使用这两种开发语言的人,这种细节还是稍加注意的好。