“javascript:;”之间有什么区别和锚href
属性中的“javascript:”?
答案 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:
,附加分号。除此之外,没有任何差异。