javascript和PHP中的相等运算符

最近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;
}

输出结果分别是truefalse,原因是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之类的操作。所以0str1str转化的值都是NaN。因此第一行输出false。

虽然不同语言之间用法不同没必要大惊小怪,但是对于经常使用这两种开发语言的人,这种细节还是稍加注意的好。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章