跳到主要内容位置

超链接里的 javascript:void(0); 是什么意思?

如果想阻止 <a/> 标签的链接跳转,我们经常会使用 javascript:void(0);这一串代码,但是你知道它每部分都是什么意思吗?

我:
A.知道
B.不知道

javascript:

我们先看一下前半部分的 javascript:。因为在<a/>标签的 href 属性中,我们需要编写 URL,用来跳转到其它页面,例如:https://www.bilibili.com,这些 URL 中的开头(scheme)指定了访问协议,例如有 http、https、ftp、file 等,或者还可以自定义。而 javascript: 是个标准的、合法的 URL 协议,在它后面可以直接编写 JavaScript 代码, 浏览器会把代码执行结果渲染到新页面中,例如在浏览器地址栏输入:

javascript: "test";

会在新页面中显示 test。这里要注意的是,根据浏览器的安全限制,并不是所有的 JavaScript 代码都能够执行。

void(0)

现在我们知道 javascript: 后面是 JavaScript 表达式了,那么 void(0) 这个 JavaScript 代码是什么意思呢?void 是 JavaScript 中不常用的一个运算符,传递给它的任何表达式,都会返回 undefined:

void (1 + 1); // undefined
void 2; // undefined

一般为了直接得到 undefined,就写成了 void(0)。当 javascript: 后面的表达式的返回值为 undefined 时,浏览器就不会发生跳转了。因此 javascript:void(0)能够阻止 <a/> 标签的跳转。 不过这种方式并不推荐,因为它会把 html 跟 javascript 杂糅到一起,推荐使用事件监听的方式阻止页面跳转。

小结

好了,这个就是 javascript:void(0)所表示的含义,你学会了吗?如果有帮助请三连,想学更多有用的前端开发知识,请关注峰华前端工程师,感谢观看!

提示

一系列的课程让你成为高级前端工程师。课程覆盖工作中所有常用的知识点和背后的使用逻辑,示例全部都为工作项目简化而来,学完即可直接上手开发!

即使你已经是高级前端工程师,在课程里也可能会发现新的知识点和技巧,让你的工作更加轻松!

《React 完全指南》课程,包含 React、React Router 和 Redux 详细介绍,所有示例改编自真实工作代码。点击查看详情。

《Vue 3.x 全家桶完全指南与实战》课程,包括 Vue 3.x、TypeScript、Vue Router 4.x、Vuex 4.x 所有初级到高级的语法特性详解,让你完全胜任 Vue 前端开发的工作。点击查看详情。

《React即时通信UI实战》课程,利用 Storybook、Styled-components、React-Spring 打造属于自己的组件库。

《JavaScript 基础语法详解》本人所著图书,包含 JavaScript 全面的语法知识和新特性, 可在京东、当当、淘宝等各大电商购买