注:根据《JavaScript权威指南》总结。
犀牛书里面总结了四种在HTML文档中嵌入JavaScript代码的方法:
- 内联。放置在
<script>
标签里面; - 放置在
<script>
标签的src属性指定的外部文件中; - 放置在HTML事件处理程序中,该事件处理程序由onclick或者onmouseover这样的HTML属性值指定;
放在URL里面,这个URL使用特殊的“javascript:”协议。
那么
href="javascript:void 0;"
就是第四种引用js的方法。
一、URL中的javascript用法
在url中使用javascript这种协议类型指定,javascript:
后面的字符串会被JavaScript解释器执行,它被当做单独的一行代码。
部分浏览器会将代码的执行结果作为新页面的显示内容。
其他浏览器不允许URL像上面一样覆盖当前文档。
当代码没有返回值时,浏览器都不会发生跳转,所以实际上href="javascript: /*some code here*/"
差不多等价于onclick=/*some code*/
二、href=”javascript:void 0;”的意图
为了确保javascript:URL 不会覆盖当前文档,强制用void 操作符给表达式赋予undefined;
三、为什么不直接使用undefined?
上面说到用void来赋予undefind,为什么不直接返回undefined?
这是因为浏览器中,undefined是window对象的一个属性,而在有些浏览器中允许修改这个属性。