"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:和附加的分号。除此之外,没有任何区别。