Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这两段js代码有什么不同吗?_Javascript_Cross Browser_Cross Platform - Fatal编程技术网

Javascript 这两段js代码有什么不同吗?

Javascript 这两段js代码有什么不同吗?,javascript,cross-browser,cross-platform,Javascript,Cross Browser,Cross Platform,你能告诉我以下两个代码的含义是否完全相同(在所有操作系统下,包括Mac,我无法测试) 代码1 if($('#mail1').val()==$('#mail2').val()){} else{ alert("Mail inputs don't match!");return; } 代码2 if($('#mail1').val()!=$('#mail2').val()){ alert("Mail inputs don't match!");return;} 你能告诉我下面两个代码的意思是否完

你能告诉我以下两个代码的含义是否完全相同(在所有操作系统下,包括Mac,我无法测试)

代码1

if($('#mail1').val()==$('#mail2').val()){} 
else{
alert("Mail inputs don't match!");return;
}
代码2

if($('#mail1').val()!=$('#mail2').val()){
alert("Mail inputs don't match!");return;} 
你能告诉我下面两个代码的意思是否完全相同吗

是的


我有时在代码中看到一个空的
if
块。我的猜测是,一些开发人员发现它更容易阅读,或者如果块用作将来的占位符,那么空的
。不管怎样,我都不使用或提倡这种编码实践。

第一个代码是多余的,你不需要
,如果没有,第二个更正确,但这更正确:

if($('#mail1').val() !== $('#mail2').val()){
  alert("Mail inputs don't match!");
  return;
} 

确实如此,但您应该使用===而不是==或!==而不是!=。
三重等于避免了类型强制

也一样。你有:

if (something) then do nothing
else do this-action


相同,是吗?

虽然我同意
=
是一种好的做法,但在这种情况下,不会有强制,因为它始终是字符串到字符串的比较。这是一种好的编码做法。显然,OP对JS来说是新的,应该养成使用它的习惯。另一点是,如果字段是多值字段,那么.val()可能会返回一个数组。在多重选择的情况下,我建议需要强制
=
。想象一下,如果两个输入都有
“foo”
作为其值,但其中一个是倍数。
=
将对数组执行
toString
转换,从而比较
“foo”==“foo”
,这将提供所需的结果,因为从开发人员的角度来看,两个输入都被分配了相同的值。但是严格的
==
会将它们视为不相等,这对于预期任务来说是一个奇怪的结果。
if (not something) then do this-action