首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么使用`javascript:void(0)`而不是`javascript:`作为href什么都不做占位符?

javascript:void(0)javascript:都是用作href属性的占位符,用于在点击链接时执行JavaScript代码。但是它们之间有一些细微的差别。

首先,javascript:void(0)是一个表达式,它的返回值是undefined。这意味着当点击这个链接时,不会发生任何具体的操作或页面跳转。这通常用于在不需要具体操作的情况下,为了满足HTML语法的要求而使用占位符。

相比之下,javascript:是一个伪协议,它指示浏览器执行后面的JavaScript代码。例如,javascript:alert('Hello')会在点击链接时弹出一个包含"Hello"的警告框。然而,如果在javascript:后面不跟任何有效的JavaScript代码,浏览器会尝试执行一个空的JavaScript语句,这可能导致不必要的错误或副作用。

所以,为什么使用javascript:void(0)而不是javascript:作为href什么都不做的占位符呢?

使用javascript:void(0)的主要原因是为了避免不必要的JavaScript执行。当我们只需要一个占位符来满足HTML语法要求,而不需要具体的JavaScript操作时,使用javascript:void(0)可以确保点击链接时不会执行任何JavaScript代码,从而避免可能的错误或副作用。

另外,使用javascript:void(0)还可以提高代码的可读性和可维护性。通过明确地使用void(0),我们可以清楚地表达出这个链接是一个占位符,而不是意图执行具体的JavaScript操作。

需要注意的是,随着现代Web开发的发展,使用javascript:void(0)作为占位符的需求已经减少。在大多数情况下,可以使用其他HTML元素或CSS样式来实现类似的占位符效果,而不需要使用JavaScript。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • a标签中防止跳转的href=javascript:;、void(0);等都是什么意思

    标签的 href 属性用于指定超链接目标的 URL,href 属性的值可以是任何有效文档的相对或绝对 URL(路径),包括片段标识JavaScript 代码段。...javascript: 是表示在触发默认动作时,执行一段JavaScript代码, javascript:; 表示什么都不执行,这样点击时就没有任何反应。...test; 使用2个到4个#,见的大多是 "####" ,也有使用 "#all" 等其他的。一个无意义的标签指定,不做任何处理。...test; javascript:void(0) 表示一个死链接,执行空事件。...声明:本文由w3h5原创,转载请注明出处:《a标签中防止跳转的href="javascript:;"、"void(0);"等都是什么意思》 https://www.w3h5.com/post/228.html

    3.8K20

    探索JavaScript中Null和Undefined的深渊

    / 在讨论JavaScript中的原始数据类型时,大多数人了解基本知识,从String,Number和Boolean开始。...使用相等运算(==)将这两个虚假值与其他虚假值进行比较,可以发现它们除了自身之外不等于其他任何值: null == 0; // false undefined == ""; // false null...在这种情况下,JavaScript是一种动态的,弱类型的语言,它将仅默认为一个undefined值,不会引发错误。...这就是为什么typeof运算与值一起使用时返回“对象”的原因null。最初的理由是,null过去和现在通常用作需要对象的空引用,非常类似于占位。...由于它是一个外部API,因此尝试检索不存在的元素会返回一个null值,不是undefined。 通常,如果您需要为变量或属性分配非值,将其传递给函数或从函数返回,null则几乎总是最佳选择。

    72410

    28个JavaScript 编程黑科技:还有这种操作!

    那你可以考虑这么做: var data = void 0; // undefined voidJavaScript中是一个操作,对传入的操作不执行并且返回undefined。...void后面可以跟()来用,例如void(0),看起来是不是很熟悉?...没错,在HTML里阻止带href的默认点击操作时,喜欢把href写成javascript:void(0),实际上也是依靠void操作不执行的意思。...当然,除了出于装逼的原因外,实际用途上不太赞成使用void,因为void的出现是为了兼容早起ECMAScript标准中没有undefined属性。void 0的写法让代码晦涩难懂。 ?...所以这就是为什么数据库存储对于货币的最小单位都是分。 简单说, 0.1和 0.2的二进制浮点表示都不是精确的,所以相加后不是 0.3,接近(不等于) 0.30000000000000004。

    55530

    令人惊叹的JavaScript装B黑科技

    那你可以考虑这么做: var data = void 0; // undefined voidJavaScript中是一个操作,对传入的操作不执行并且返回undefined。...void后面可以跟()来用,例如void(0),看起来是不是很熟悉?...没错,在HTML里阻止带href的默认点击操作时,喜欢把href写成javascript:void(0),实际上也是依靠void操作不执行的意思。...当然,除了出于装逼的原因外,实际用途上不太赞成使用void,因为void的出现是为了兼容早起ECMAScript标准中没有undefined属性。void 0的写法让代码晦涩难懂。 ?...所以这就是为什么数据库存储对于货币的最小单位都是分。 简单说,0.1和0.2的二进制浮点表示都不是精确的,所以相加后不是0.3,接近(不等于) 0.30000000000000004。

    59140

    Html标签href的困惑记载

    这边见大家都用。当然之前偶然看了张鑫旭一篇《疑问:为什么使用href=”javascript:void(0);”?》...,从中窥测之前多用的是。但为什么要用这个,他本人也没弄明白,然后读完,我也没明白。...- 指向页面中的锚(href=”#top”) 根据网搜得到的答案如下,亲测也的确如此: ​点击: 点击链接后不会回到网页顶部 <a href...最后,也更进一步的疑问:JavaScript中语句最后的分号是可以缺省的,那为何要使用javascript:;不是javascript:呢?是习惯还是规范,我也很疑惑!我也很疑惑!我也很疑惑!...总结:#包含了一个位置信息默认的锚是#top 也就是网页的上端; javascript:void(0)仅仅表示一个死链接,没有任何信息。

    3.4K50

    2024全网最全面及最新且最为详细的网络安全技巧 七之 XSS漏洞典例分析POC;EXP以及 如何防御和修复(6)———— 作者:LJS

    JavaScript中,标识只能包含字母或数字或下划线(“_”)或美元符号(“$”),且不能以数字开头。标识与字符串不同之处在于字符串是数据,标识是代码的一部分。...这就是为什么问题1中的代码不能被执行。因为URL中被编码的“javascript”没有被解码,因此不会被URL解析器识别。该原则对协议后面的“:”(冒号)同样适用,即问题3也得到解答。...由于是“javascript”协议,JavaScript解析器开始工作并执行这段代码,这就是为什么问题2中的代码能够被执行。...字符串中:当Unicode转义序列存在于字符串中时,它只会被解释为正规字符,不是单引号,双引号或者换行这些能够打破字符串上下文的字符。这项内容清楚地写在ECMAScript中。...因为“(11)”不会被正确的解析,“alert(11)”也不是一个有效的标识名称。

    10010

    visual studio code使用教程_visual studio code 权威指南 pdf

    )了,其用于在进行占位跳转时(1→2)对当前占位(1)适用正则替换。...新特性听起来和变量转换很像,它们的区别在于占位转换适用于占位变量转换适用于变量。前者更灵活,后者更省心。...占位还可以嵌套,例如{1:another 比如,结构体的代码片主体可以这样写: struct ${1:name_t} {\n\t$2\n}; 作为「Placeholder」的name_t一方面可以提供默认的结构名称...-- --> 注:这些都是变量名,不是宏,在实际使用的时要加上 $ 。 3.4.2 变量转换 变量转换可将变量的值格式化处理后插入预定的位置。...上述全部内容我们都在前文介绍过了,因此此处不做赘述。我们唯一需要关注的是转换触发的时机:占位转换将在进行占位跳转(假设 1→2)的时候自动适用到当前占位(1)。

    11.1K61

    编写一个非常简单的 JavaScript 编辑器

    你可以在TypeScript中使用JavaScript库,并且当你想要使用JavaScript库的时候,你可能需要导入该库中所有类型的描述。这是我们在第一行代码中所导入的内容。 ? ? ?...那么,generateHTML做什么呢?它生成HTML代码,用于放置跨度以指示插入位置的文本:此元素是插入占位为什么我们不放置插入本身呢?...因为插入有大小,所以如果我们在文本内部移动插入,那么我们将导致所有的文本总是在移动。相反,我们移动大小为零的插入占位,然后我们使用插入放置在插入占位上方,但在不同的z-index。...通过这种方式,基本上我们就可以在我们想要看到的地方看到插入不必左右移动文本就为了给插入空出地方。...结论 好的,让我们先简单的开始:一个非常小的编辑器,在这个编辑器中我们可以键入、删除和使用箭头移动。这不是最令人印象深刻的编辑器。但它简单,也可以工作。

    94131
    领券