JS 是一种灵活且轻量级的语言,这种特性让我们经常觉得它是一门最简单的语言,也是最难掌握的语言。虽然经常使用,但我仍然偶然发现一些我不知道的隐藏语法或技巧。

在处理错误时,我偶然发现了以下代码。

return !!(this.isFirstOverall() || this.get('videoId')

我非常确定这是一个错误,这就是该错误的根源。否定否定没有任何意义。

但是经过一番谷歌搜索后,我发现Javascript中存在诸如消极负数之类的问题。

简而言之,其目的是将任何表达式转换为实际的true/false布尔值,就像具有Boolean( insert_value_here.)。

例如下面的表达式:

const isIE8 = navigator.userAgent.match(/MSIE 8.0/);
console.log(isIE8);

这将记录一个Array或null。是的,我们可以将其评估null为错误。实际上,更确切地说,null是一个错误的值。

但是,如果我们对此双重否定:

const isIE8 = !!navigator.userAgent.match(/MSIE 8.0/);
console.log(isIE8);

实际的true/false布尔值将被输出。

双重否定!!是不实际的操作,如&&或||。它只是两个否定!符号的序列。

第一个否定将数据(无论数据类型如何)转换为布尔值,但值相反。第二个否定再次更改布尔值以提供实际结果。

// example - the long version
const x = {}; // truthy
const y = !x; // false
const z = !y; // true// or by using the double negation
const x = {}; // truthy
const z = !!x; // true

使用的优缺点!Javascript中的双重否定
好吧,这取决于您要弄清楚什么。当然,对于不知道这种双重否定把戏的人(例如我)来说,实际的代码看起来会很奇怪。

另一方面,它将为实际评估提供更清晰的价值。结果将是对还是错。例如,您不必再怀疑一个空对象是true还是false。

const result = {};
if(result) {// make something
}

如果本篇文章有任何错误和建议,欢迎留言,最后,谢谢大家的观看。

偶然发现,Javascript中双重否定的写法相关推荐

  1. html逻辑判断符,JavaScript中的逻辑判断符、||与!介绍

    与C.Java等语言一样,JavaScript中可以用&&.||.!三个逻辑判断符来对boolean值进行逻辑判断.与C.Java不同的是,JavaScript中逻辑与(&&a ...

  2. 服务器客户端消息设计,详解JavaScript中的客户端消息框架设计原理

    哇--是个危险的题目,对吗?我们对于什么是本质的理解当然会随着我们对要解决问题的理解而变化.因此我不会说谎--一年前我所理解的本质很不幸并不完整,因为我确信我将要写的已经快伴随我有6个月之久.所以,这 ...

  3. javascript中面向对象的5种写法

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  4. 在JavaScript中创建命名空间的几种写法

    在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() {return 'Hell ...

  5. JavaScript中数组的几种写法

    1.直接new一个数组,不指定数组长度,使用数组下标给数组赋值,数组中可以存放任意类型的数据.(遍历时未赋值的元素将会显示undefined): <!DOCTYPE html> <h ...

  6. Javascript中的陷阱大集合【译】

    参考:http://www.2cto.com/kf/201111/111203.html 昨天晚上在自己的个人技术博客上翻译了一篇有关Javascript的文章,今天想想还是把它投稿到博客园吧,大家可 ...

  7. 深入理解javascript中的立即执行函数(function(){…})()

    2019独角兽企业重金招聘Python工程师标准>>> javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各 ...

  8. django中的for循环_深入了解 JavaScript 中的 for 循环

    在ECMAScript5(简称 ES5)中,有三种 for 循环,分别是: 简单for循环 for-in forEach 在2015年6月份发布的ECMAScript6(简称 ES6)中,新增了一种循 ...

  9. 【译】JavaScript中的Callbacks

    你是否遇到过"callbacks"一词,但是不知道这意味着什么?别着急.你不是一个人.许多JavaScript的新手发现回调也很难理解. 尽管callbacks可能令人疑惑,但是你 ...

最新文章

  1. MATLAB在温室中的应用,基于MATLAB的日光温室内气温的图形显示方法与流程
  2. linux 网络设置
  3. MySQL基础课堂笔记
  4. LeetCode - Easy - 118. Pascal‘s Triangle
  5. Java自引用造成的死循环
  6. 喵喵的支付宝小程序登录
  7. python查看数据大小_python 监控文件大小
  8. Fortran编程:(一)认识Fortran
  9. 小心微信被封号,这码千万不要扫!
  10. php求圆柱体积,认识圆柱体a href=http://ruiwen.com/friend/list.php(教师中心专稿)/a -- 小学数学教学资源网...
  11. win10任务管理器中的专用GPU内存 vs 共享GPU内存
  12. Open OnDemand部署安装使用手册
  13. Property [text] not found on type [java.lang.String]
  14. 左宗棠:大清朝最后一棵顶梁柱
  15. Java---SSM---Spring(1)
  16. 动态规划之最长递增子序列 最长不重复子串 最长公共子序列
  17. kurento服务器搭建(docker方式)
  18. 【AI达人创造营三期-Antigen Detector(新冠试剂盒检测)部署】
  19. osg 三维gis开发_GIS+BIM跨界融合应用:智能管理道路“健康”,精准定位路桥病害...
  20. 同花顺_代码解析_技术指标_Z_3

热门文章

  1. 简单的面向对象思想,写一个传奇人物的属性
  2. SQL SERVER 发邮箱
  3. PPT演示文稿放映时会议记录的技巧
  4. video标签不能自动播放的原因
  5. 【DP】AGC012B Splatter Painting
  6. 毕业设计-模拟数据集生成笔记
  7. 计算机中的英语六级作文万能模板,英语六级作文的通用万能模板
  8. Spring全家桶-Spring Security之自定义数据库表认证和鉴权
  9. 在jsp页面上直接打开PDF文件
  10. 文件系统(内存上的 + 磁盘上的)