22."javascript:;" 和 "javascript:void" 有区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了22."javascript:;" 和 "javascript:void" 有区别?相关的知识,希望对你有一定的参考价值。

技术分享

void 运算符会对给定的表达式进行求值,然后直接返回 undefined

 

void 运算符通常只用于获取 undefined 的原始值,一般使用 void(0)(等同于 void 0)。在上述情况中,也可以使用全局变量undefined 来代替(假定其仍是默认值)。

<script>

console.log(void(console.log("OK")));

</script>

这段代码的运行结果为:

OK

undefined

一般我个人称 javascript:void(0)死链接

javasccript:;是为空链接,其实他也也是直接返回的undefined,而前者是计算完毕之后返回undefined

 

个人习惯使用前者,好像感觉后置更快点,我感觉在前端就无所谓了

-----------------------------------------------------------------------

当用户点击一个以 javascript: URI 时,浏览器会对冒号后面的代码进行求值,然后把求值的结果显示在页面上,这时页面基本上是一大片空白,这通常不是我们想要的。只有当这段代码的求值结果是 undefined 的时候,浏览器才不会去做这件傻事,所以我们经常会用 void 运算符来实现这个需求

看代码:

<a href="javascript:void(0);">
  这个链接点击之后不会做任何事情,如果去掉 void(),
  点击之后整个页面会被替换成一个字符 0。
</a>

<a href="javascript:void(document.body.style.backgroundColor=‘green‘);">
  点击这个链接会让页面背景变成绿色。
</a>

 

 

参考内容:

https://segmentfault.com/q/1010000002435291

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/void

http://www.koikikukan.com/archives/2015/03/11-002222.php

 

额外再说一点:关于<a href="#"></a>

#包含了一个位置信息

默认的锚是#top 也就是网页的上端

 

如果想完成跟右侧等价的写法,我提供了三种方式进行参考

<a href="#" onclick="return false;">href</a>

<a href="javascript:return false;" onclick="调用的js方法">href</a>

<a href="####">这里是空链接,没有经过测试</a>


还有其他方式:这里就直接上代码了

 

<script>

function foo() {

    // ...

}

</script>

<a href="http://user-domain/" onclick="foo();return false">test</a>

-----第二种方式

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

<script>

$(function(){

    $(‘#test‘).click(function(e){

        e.preventDefault();

        // return false;

    });

});

</script>

<a href="http://user-domain/" id="test">test</a>

以上是关于22."javascript:;" 和 "javascript:void" 有区别?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery scrip使H5可切换

JavaScript基础学习

JavaScript中的简单哈希表(关联数组)

JavaScript 中的 ?: 语法是啥? [复制]

JavaScript css类名操作

Javascript面向对象编程:非构造函数的继承