“javascript:;”之间的区别是什么?和href属性中的“javascript:”?

时间:2013-04-17 09:24:40

标签: javascript html

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

4 个答案:

答案 0 :(得分:8)

与只有;的空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

答案 1 :(得分:6)

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

但是,您不应该使用javascript:网址 - 它们已被弃用。如果没有非js版本的链接,请使用onclick和有用的href或#。在这种情况下,请记住要防止事件发生。

答案 2 :(得分:1)

javascript:告诉我们有一个javascript语句,而不是指向另一个页面的链接。 ;是javascript语句。但是,;不会执行任何操作,因此这是一个无操作。

答案 3 :(得分:0)

javascript:;javascript:,附加分号。除此之外,没有任何差异。