zoukankan      html  css  js  c++  java
  • JS What does `void 0` mean?

    这几天在github的源码中看到了很多 result == void 0 的判断,起了好奇心,这句话是啥意思?
    为啥经常出现在代码中,于是马上行动起来,Google一搜第一条就是stackoverflow的回答,看完后恍然大悟,写下这篇心得分享给大家。

    语法

    void expression

    MDN的描述

    能向期望一个表达式的值是 undefined 的地方插入会产生副作用的表达式。也就是为了避免产生某种副作用,将一个为 undefined 的值转换为 void 表达式

    作用

    避免undefined的重定义

    由于undefined不是个关键字,es5以前可以将变量名undefined赋予一个变量,这时将会改变undefined的作用,在很多源码库中都使用了void(0)代替undefined。这个bug被支持es5及更高版本的浏览器修复了,IE8中仍存在这个问题,eg:

    alert(undefined);   // undefined
    var undefined = "various";
    alert(undefined);   // various
    

    节省代码库的体积

    void 0undefined更简短,对于浏览器来说这能减少很多字节。

    可作为一个函数表达式

    在使用立即执行的函数表达式时,可以利用void运算符让JavaScript引擎把一个函数识别成函数表达式而不是函数声明(语句)。

    void function iife() {
        var bar = function () {};
        var baz = function () {};
        
        var foo = function () {
            bar();
            baz();
        };
        
        foo();
    }();
    

    JavaScript URLs

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

    <a href="javascript:void(0);">
    Click here to do something
    </a>
    

    参考链接:what-does-void-0-mean

  • 相关阅读:
    Android 测试工具集01
    Android ImageView的ScaleType属性
    Android Webview与Html5交互
    Java Notes 00
    Android 显示原理简介
    Android开发在路上:少去踩坑,多走捷径
    Android_Dialog cancle 和dismiss 区别
    SpringMVC框架
    Redis持久化
    Redis集群
  • 原文地址:https://www.cnblogs.com/haiku/p/6389654.html
Copyright © 2011-2022 走看看