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。

雖然不同語言之間用法不同沒必要大驚小怪,但是對於經常使用這兩種開發語言的人,這種細節還是稍加註意的好。

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