"javascript:;" 和有什么区别 和锚href
属性中的“javascript:”?
4 回答
与空 Javascript 文件和仅带有;
.
没有:
eval("");
//undefined
eval(";");
//undefined
见http://www.ecma-international.org/ecma-262/5.1/#sec-7.9.1
当程序从左到右解析时,遇到输入令牌流的结尾,并且解析器无法将输入令牌流解析为单个完整的 ECMAScript 程序,则在末尾自动插入分号输入流。
因此,空文件将是一个无效的程序,然后自动插入分号,它就等于只有一个分号的程序。
我突然想到,这是另一个证明 JSON 不是 Javascript 子集的情况:空 JSON 无效:
JSON.parse("");
//SyntaxError: Unexpected end of input
eval("");
//undefined
:P
javascript:
表示可用于评估 JavaScript 的伪协议。因此,它后面的单个分号等于一个脚本,它只包含;
一个空表达式,什么都不做。javascript:
之后没有任何其他内容是一个空脚本,也什么都不做。在这两种情况下,返回值都很undefined
重要,因为javascript:
返回其他内容的 url 会导致页面内容被它返回的内容替换。
但是,您根本不应该使用javascript:
url - 它们已被弃用。使用and 一个有用的 href 或者如果没有非 js 版本的链接。不过,请记住在这种情况下要防止默认事件。onclick
#
javascript:
告诉有一个 javascript 语句来而不是另一个页面的链接。是;
javascript 语句。但是,;
不会执行任何操作,所以这是一个空操作。
javascript:;
带有javascript:
和附加的分号。除此之外,没有任何区别。