首先要知道JavaScript的变量类型在一些操作符下会隐式转换的。比如 " ! " 运算符

alert(!true); // 输出falsealert(!100); // 输出falsealert(!'Web前端开发'); // 输出 false

更多详细的隐式类型转换请参考这篇博文: JavaScript隐式类型转换

一个 " ! " 将变量转为一个boolean类型的值,那么两个连续的 " ! "号叠加就会把变量转为它理应代表的布尔值。

以下为"!!"的规则

number类型: 不为0 就,!!num 等于true;

string类型: 不为"" (空字符串),!!str 等于true;

!!null 等于false

!!undefined 等于false

!!{} 等于 true  //注意:对象就算为空都会被转为true

!!function(){} 等于 true   //注意:这样写function 并不会执行function,所以就算function里面写任何东西都会返回true

  可以看到function并没有被执行,并且返回true

举例:

console.log(!!0);         //false
console.log(!!123);       //true   console.log(!!"some");    //true
console.log(!!"");        //falseconsole.log(!!undefined)  //falseconsole.log(!!null)       //false//function testInIf(value){if(value){return true;} else {return false;}
}//以下全部打印trueconsole.log(!!{});
console.log(!!{k: 'v'});
console.log(testInIf({}))
console.log(testInIf({k: 'v'}))console.log(!![]);
console.log(!![0,1]);
console.log(testInIf([]))
console.log(testInIf([0,1]))console.log(!!function(){});
console.log(testInIf(!!function(){}))console.log(!!function(){console.log("被执行");return false;
});
//这个函数并没有被执行
//请注意, 双"!"号和单"!"号都不会执行函数,只是将函数转为了函数表达式,想要执行还需要在后面加 ()

!!obj与JavaScript中!!的作用相关推荐

  1. javascript中??的作用

    判断null 和undefined handleOneClick() {let cc = undefined;let aa = null;let b = 0let ff = cc ?? '出错了'co ...

  2. JavaScript中的定时器

    js定时器 通过使用 JavaScript,我们有能力作到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行.我们称之为计时事件. ** 定时器在javascript中的作用** 1.制 ...

  3. JavaScript中的load事件的作用_史上最全的web前端面试题汇总及答案JavaScript之二(二)...

    作者:樱桃小丸子儿 链接:https://www.jianshu.com/p/abadcc84e2a4 JavaScript JS的基本数据类型 number,string,boolean,objec ...

  4. html $符号的作用,javascript 中$符号是代表什么意思!

    $符号在php中是表示变量的特征字符, 在js中它也有很多作用, 一般我们用来命名一个函数名称,获取id的 1. 首先可以用来表示变量, 比如变量 var s='asdsd'或var $s='asda ...

  5. javascript中的console.log有什么作用?

    javascript中的console.log有什么作用? 主要是方便你调式javascript用的.你可以看到你在页面中输出的内容. 相比alert他的优点是: 他能看到结构话的东西,如果是aler ...

  6. javascript 中 caller 与 callee 的作用以及用法

    这两个关键字在平时编码中几乎难以用到,但它们既然存在于javascript语言体系中,那么还是有必要了解下. caller 是 javascript 函数类型的一个属性,它引用调用当前函数的函数 fu ...

  7. html中this的作用,JavaScript 中的 this :工作原理和陷阱

    在 JavaScript 中,this 是一个相对难懂的特殊变量.因为它随处可用,而不仅仅是面向对象的编程中.本文将解释 this 是如何工作的,以及它可能导致问题的地方,并在文章的给出最佳实践. 为 ...

  8. JavaScript中defer的作用

    JavaScript中defer的作用 Javascript中defer的作用是文档加载完毕了再执行脚本,这样会避免找不到对象的问题. defer是脚本程序强大功能中的一个"无名英雄&quo ...

  9. JavaScript 中加号的作用

    JavaScript 中加号的作用 1.求和运算 两边都是数值类型时进行求和运算,如果数值+布尔值会直接把布尔类型转换成 1 or 0 来进行运算 var num = 1+2; var num1=1+ ...

  10. Javascript中callee和caller的作用

    Javascript中callee和caller的作用 caller 是返回⼀个对函数的引⽤,该函数调⽤了当前函数: callee 是返回正在被执⾏的 function 函数,也就是所指定的 func ...

最新文章

  1. 股市投资大师的股市投资名言
  2. python学习之自习语法(20180626_update)
  3. flume高可用-balance-配置文件编写
  4. Laravel框架中的路由和控制器
  5. 【python】错误、异常和文件---复习笔记
  6. Win11有黑色边框怎么办 Win11有黑色边框的解决方法
  7. 360Alluxio联合Meetup——分布式存储与Alluxio应用实践
  8. #研发中间件介绍#异步消息可靠推送Notify
  9. 奈飞win10安装包_使用Windows10系统在奈飞/网飞上观看4K的必要条件
  10. ppapi获取html,在HTML中给PPAPI插件配置参数
  11. 信号与系统速成和课后作业
  12. png图片格式转换器_如何将图像转换为PNG格式
  13. 微信点餐小程序怎么做?微信小程序点餐系统制作
  14. Elastic 极客时间 阮一鸣 学习笔记_入门
  15. 北上或者南下之被摆了一道
  16. CMS介绍和过程分析
  17. Android WebView加载完成的监听
  18. uipath 执行 insert 语句报 “语法错误“ 的问题解决
  19. 全网通PA:SKY68018-11 Gigadata低功耗PA
  20. 莫道君行早更有早来人(二)几点网络技术的想法

热门文章

  1. 使用 Visual Studio 创建 .NET 类库
  2. matlab光学原理仿真应用衍射,基于Matlab的光学衍射实验仿真
  3. 记录一下SlickEdit回退命令
  4. 用纯fme批量生成界址点成果表(模板格式全部自拟)
  5. 如何使用STM32F1/F4驱动CS5463
  6. [Luogu P4630] [BZOJ 5463] [APIO2018] Duathlon 铁人两项
  7. python装饰器两层和三层区别,Python装饰器和装饰器图案有什么区别?
  8. 设置单行文本溢出省略导致不能自适应宽度,white-space: nowrap
  9. 数据库的备份与恢复技术
  10. 如何将pdf文件压缩变小?