码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • void 0是什么


    场景

    当我们在 ts 中使用可选链时,会发现,最后的编译代码可能如下所示

    const a = {
      name: 'fnn',
      age: 18
    };
    const b = a?.age
    
    // 编译后如下
    
    const b = a === null || a === void 0 ? void 0 : a.age;
    export {};
    

    这是我们发现 a?.age 这个判断会生成 a === null || a === void 0

    那么 void 0 是什么呢

    MDN 给出的解释是,对给定的表达式进行求值,然后返回 undefined。

    如下代码全部都返回 undefined

    void 1;
    void console.log('expression evaluated');
    void function iife() {
      console.log('iife is executed');
    }();
    void function test() {
      console.log('test function executed');
    };
    
    '
    运行

    有什么作用

    • void 运算符通常只用于获取 undefined 的原始值,一般使用 void(0)(等同于 void 0)
    • 这个运算符允许在表达式执行完成时,然后返回 undefined 值。
    • ES5 之前 undefined 是可以被修改的,因此 undefined 的值可能是不准确的

    JavaScript URI

    当用户点击一个以 javascript: 开头的 URI 时,它会执行 URI 中的代码,然后用返回的值替换页面内容,除非返回的值是 undefined。void 运算符可用于返回 undefined

    <a href="javascript:void(0);">
      这个链接点击之后不会做任何事情
    a>
    
    <a href="javascript:void(document.body.style.backgroundColor='green');">
    	点击这个链接会让页面背景变成绿色。
    a>
    

    箭头函数使用

    箭头函数标准中,允许在函数体不使用括号来直接返回值。如果右侧调用了一个原本没有返回值的函数,其返回值改变后,则会导致非预期的副作用。
    当函数返回值不会被使用到的时候,应该使用 void 运算符,来确保 API 改变时,并不会改变箭头函数的行为。

    button.onclick = () => void doSomething();
    

    这确保了当 doSomething 的返回值从 undefined 变为 true 的时候,不会改变代码的行为,因为 void 始终返回 undefined。

  • 相关阅读:
    BSV 上高效的多方公平交易
    是什么原因导致自我破坏行为?(你如何停止?
    策略验证_买入口诀_身抱多线好景出现
    神经网络与强化学习:揭示AI的超能力
    springmvc第十四个练习(异常处理)
    曝 15 寸 iPad 或将变身 Mac?谷歌:大屏设备应具备智能手机体验
    二维码智慧门牌管理系统升级解决方案:门牌聚合,让管理更便捷!
    一小时上手微信小程序开发
    02-认识jQuery及使用方法
    人工智能基础_机器学习038_中国人寿保费预测(EDA数据探索)_导包_数据探索_---人工智能工作笔记0078
  • 原文地址:https://blog.csdn.net/weixin_40013817/article/details/127125820
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号