在 Chrome 和 Firefox 中不同的 "return null" 结果

Different "return null" results in Chrome and Firefox

给定以下代码:

jQuery(document).ready(function($) {
      $('[name="clickableTD"]').click(function() {
            window.document.location = $(this).attr("href");
      });
});


function Add(id) {
  
 
    var stock = "2";
 
    var quantity = prompt("SELECT QUANTITY:", 1);
  
    if (quantity == null) {
        return null;
    }
  
    else if (quantity <= stock) {
        alert("Good");
    }
 
 else if (quantity > stock) {
        alert("Over");
 }
 
 else if (isNaN(quantity)) {
        alert("NaN");
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>


<table border="1">
  <tr>
    <td name="clickableTD" href="javascript:Add('1')">
      <a>Click</a>
    </td>
  </tr>
</table>

如果用户使用 Chrome 作为浏览器 returns 空值(通过单击取消),则不会发生任何预期的事情。

但是如果用户使用 Firefox 他将被重定向到 url Add() 并在屏幕上显示 null 作为文本字符串。

为什么 Firefox 的反应与 Chrome 不同?

我一直无法找到有关 javascript: URL 工作原理的详细规范,以及当代码 returns 不是字符串或未定义时它们应该做什么。看起来 Chrome 和 FireFox 在这种情况下采取了不同的方法。 Chrome 将它们视为 undefined,并且不会更改页面内容。 FF 做各种事情:如果它 returns null 它显示字符串 null;如果它 returns 一个具有单个 属性 的对象,它会显示 属性.

的值

使用 return void(0)return undefined 而不是 null 以获得更好的浏览器兼容性。