Javascript “phpjs”strps函数未返回true

Javascript “phpjs”strps函数未返回true,javascript,php,Javascript,Php,在将php脚本转换为js时,我使用了来自的一些函数。 但是,在相同条件下,“strpos”函数似乎不会返回true $string = "aaa:bbb"; $colons = strpos($string, ":"); echo $colons; if ($colons == true) {echo "yup";} 然而,与3yup相呼应: var string = "aaa:bbb"; var colons = strpos(string, ":"); console.log(co

在将php脚本转换为js时,我使用了来自的一些函数。 但是,在相同条件下,“strpos”函数似乎不会返回true

$string = "aaa:bbb";
$colons = strpos($string, ":");
echo $colons;
if ($colons == true)
    {echo "yup";}
然而,与3yup相呼应:

var string = "aaa:bbb";
var colons = strpos(string, ":");
console.log(colons);    
if (colons == true)
    {console.log("yup");}
只有回声3

这是我的错误、bug还是javascript处理的方面? 在任何情况下,对于字符串中存在冒号,建议使用什么方法来获得真实的结果


谢谢

如果您只希望基于strpo获得字符串状态,那么我想您可以执行以下操作:

if (strpos(string, ":") != false) {
    console.log("string exists!");
}

JS中的strpos不返回true。相反,它返回位置,在您的例子中,它将返回4。

php和phpjs实现都返回正确的值3,但==的语义不同

测试$colons==true的等效JS为:


因为在JavaScript中,3不等于true,而在php中,显然是这样这是你的if语句javascript@JasonSperske好的——如果我理解正确的话,这是关于js本身的,与php不同。你能多说一点为什么/怎么会这样吗?有些术语可能对我有帮助。当然。。。是的,很有效,谢谢!你知道我为什么不为真吗?javascript对布尔和整数的处理方式不同,而PHP则将所有非零都视为真。感谢-请注意,仔细检查,如果冒号位于字符串的第一个位置,它不会触发字符串exists语句。有趣的是,phpjs中的strpos函数返回false并在控制台中测试它。。。只是不是真的。这是可行的,不过我得研究一下原因。谢谢@GregoryTippett描述了确切的细节,但简单地说:在JS的比较中,布尔值true被提升为整数1,而在PHP中,整数被降级为布尔值true
Boolean(colons) == true