javascript:;& #39;和“javascript:“;在href属性

What's the difference between "javascript:;" and "javascript:" in href attribute?

本文关键字:javascript href 属性      更新时间:2023-09-26

在锚href属性中"javascript:;"answers"javascript:"有什么区别?

与空Javascript文件和仅使用;的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 ——它们已经被弃用了。如果没有非js版本的链接,使用onclick和一个有用的href或#。记住在这种情况下使用preventDefault

javascript:告诉有一个javascript语句,而不是链接到另一个页面。;是javascript语句。但是,;不会执行任何操作,所以这是一个no-op

javascript:;javascript:加上一个分号。除此之外,没有什么不同。