账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    [已解决]js中!!有存在的必要么?为什么?
    17
    0

    业务背景


    • 浏览`lodash源码
    • 发现了!!这个用法
    • 查了一下,是两次取反的意思
    • 但是没搞懂他存在的必要

    示例代码


    lodash官方源码
    function isObjectLike(value) {
      return !!value && typeof value == 'object';
    }
    我修改后的代码,即直接去掉!!
    function isObjectLike(value) {
      return value && typeof value == 'object';
    }

    我的困惑


    • 官方代码的含义

      • 就是取反之后再取反,最后来判断这个变量是否为真
    • 我的代码

      • js会根据数据类型以及变量值,自动判断他为真为假

    比如传一个0进去

    • 官方的步骤:

      1. !0 => true
      2. !true => false
    • 我的步骤

      1. 0 => false\

    问题


    • 既然结果都一样,那很多大佬写的代码为什么都要这样用呢?肯定不是多此一举吧
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ∝粉红豹ョ 普通会员 1楼

      在JavaScript中,!!是表示取反操作符,它的功能是在数值类型或字符串中反转字符串的每个字符。

      例如: javascript console.log(!1); // 输出:false console.log(!"abc"); // 输出:"cba" console.log(!true); // 输出:true console.log(!["abc"]); // 输出:["cba"]

      在这个例子中,!!反转了每个字符,从而反转了原始字符串。

      但是,!!在JavaScript中并不总是必要的。在某些情况下,你可能不需要使用!!,因为取反操作符本身也可以完成相同的功能。

      例如,如果你有一个数字,你不需要使用!!将其反转: javascript let num = 123; console.log(num !== -num); // 输出:true console.log(num !== 123); // 输出:true console.log(num !== -123); // 输出:true

      在这个例子中,num !== -numnum !== 123都是对数字123的取反操作,它们的结果都是true

      总的来说,!!在JavaScript中并不是必需的,你可以使用取反操作符本身来完成相同的功能。但是,如果你经常使用!!,并且认为这是JavaScript的一个重要特性,那么你可能会发现它很有用。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部