5

"javascript:;" 和有什么区别 和锚href属性中的“javascript:”?

4

4 回答 4

8

与空 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

于 2013-04-17T09:27:22.110 回答
6

javascript:表示可用于评估 JavaScript 的伪协议。因此,它后面的单个分号等于一个脚本,它只包含;一个空表达式,什么都不做。javascript:之后没有任何其他内容是一个空脚本,也什么都不做。在这两种情况下,返回值都很undefined重要,因为javascript:返回其他内容的 url 会导致页面内容被它返回的内容替换。

但是,您根本不应该使用javascript:url - 它们已被弃用。使用and 一个有用的 href 或者如果没有非 js 版本的链接。不过,请记住在这种情况下要防止默认事件。onclick#

于 2013-04-17T09:26:34.000 回答
1

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

于 2013-04-17T09:26:48.060 回答
0

javascript:;带有javascript:和附加的分号。除此之外,没有任何区别。

于 2013-04-17T09:28:22.460 回答