如何清空JavaScript函数实际上做了什么?

Gul*_*har 3 javascript

在尝试了解Web服务器的工作原理时,我遇到了这样的问题:

//myfile.js
function donothing(){};

//myfile.html
javascript:donothing(open('http://www.acme.com/whatever.jpg','','left=100, right=0, top=100, scrollbars=no, status=no, titlebar=no, resizable=no, toolbar=no, menubar=no, width=255, height=255'))
Run Code Online (Sandbox Code Playgroud)

我不是JavaScript专家,所以我不知道如何使空函数工作.有人知道吗?

谢谢.

Sea*_*sey 19

这是一个自制的void替代品,以避免表达式返回值.

window.open 将返回对打开的窗口的引用,这可能会产生意外结果.

例如,尝试粘贴javascript:a=1到地址字段 - 这将导致其中的数字为1的空白屏幕,因为浏览器默认尝试使用任何表达式的结果作为新文档运行.

为避免这种情况,使用javascript:void(a=1)as作为void将不返回任何内容,因此结果不会用作新文档.

不需要使用donothing(foo=bar)或等效Function.prototype(foo=bar),因为内置功能void完全相同.

但是请注意,只有在将文本复制到地址字段时才需要使用void ,当你javscript:在链接中使用伪协议时,它是不必要的(你不应该这样做).