代码之家  ›  专栏  ›  技术社区  ›  mkoryak

在javascript中void操作符的意义是什么?

  •  49
  • mkoryak  · 技术社区  · 16 年前

    我见过一些人用 void 操作员的代码。我也在 href 属性: javascript:void(0) 这似乎没有什么比 javascript:;

    那么,使用 无效 操作员?

    3 回复  |  直到 7 年前
        1
  •  49
  •   Grant Gryczan    7 年前

    Explanation of its use in links :

    这就是为什么书签 通常将代码包装在void()或 一个匿名函数 返回任何内容以停止浏览器 尝试显示的结果 执行书签。为了 例子:

    javascript:void(window.open("dom_spy.html"))
    

    如果直接使用返回的代码 某物(中的新窗口实例 在这种情况下),浏览器将结束 显示:

    javascript:window.open("dom_spy.html");
    

    在firefox中,上面会显示:

    [object Window]
    
        2
  •  15
  •   Zlatin Zlatev    8 年前

    这个 undefined 在ES1.3之前,无法在JavaScript中直接访问值。

    运算符 void <expression> 因此包括允许访问该值。

    有时,它非常有用,尤其是在使用Web API(例如事件处理程序)时,以确保表达式的结果是一致的。 未定义 .

    未定义 属性已添加到ES1.3中的全局对象 void 变得不明显。

    所以你的问题。

        3
  •  12
  •   Alana Storm    13 年前

    考虑以下事项:

    <a href="javascript:void(fish=document.getElementById('foo').value);void(document.getElementById('bar').value=fish);">With Void</a>
    
    <a href="javascript:fish=document.getElementById('foo').value;document.getElementById('bar').value=fish;">Without Void</a>
    
    <input type="text" id="foo" value="one fish" />
    <input type="text" id="bar" value="no fish" />
    

    第一个链接将交换文本字段的值。第二个链接将打开一个新页面,其中包含文本“一条鱼”。如果使用 javascript: link ,表达式返回除 null undefined 浏览器会将其解释为链接应该做什么。将所有表达式/语句包装在 void() 函数,您可以确保整个代码片段都能运行。现在,这主要用于书签,就像使用 onclick 属性或在单独的javascript块/文件中设置事件处理程序是“规范”。

    至于 javascript: VS javascript:void() ,第一条语句不明确。你说,“嘿,我想运行一些javascript”,但是你没有提供任何代码。不一定清楚浏览器在这里应该做什么。在第二条语句中,你说“嘿,运行一些javascript”,你的代码最终返回未定义的,浏览器知道这意味着“什么都不做”。

    既然我在这里,我也会指出 JavaScript: javascript:void(); 已经失宠于大多数关心加价的人。更好的做法是让onclick处理程序返回false,并使链接指向一个页面/资源,这对于那些关闭了javascript或使用了诸如noscript之类的javascript阻止程序的人来说是有意义的。

    推荐文章