js中!和!!的区别与用法

 更新时间:2020年05月09日 23:45:53   作者:Tison  
这篇文章主要介绍了js中!和!!的区别与用法,js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值,需要的朋友可以参考下

js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值,

1、!可将变量转换成boolean类型,null、undefined和空字符串取反都为false,其余都为true。

!null=true
!undefined=true
!''=true
!100=false
!'abc'=false

2、!!常常用来做类型判断,在第一步!(变量)之后再做逻辑取反运算,在js中新手常常会写这样臃肿的代码:
判断变量a为非空,未定义或者非空串才能执行方法体的内容

var a;
if(a!=null&&typeof(a)!=undefined&&a!=''){
  //a有内容才执行的代码 
}

实际上我们只需要写一个判断表达:

if(!!a){
//a有内容才执行的代码... 
}

就能和上面达到同样的效果。a是有实际含义的变量才执行方法,否则变量null,undefined和''空串都不会执行以下代码。

可以总结出来,“!”是逻辑与运算,并且可以与任何变量进行逻辑与将其转化为布尔值,“!!”则是逻辑与的取反运算,尤其后者在判断类型时代码简洁高效,省去了多次判断null、undefined和空字符串的冗余代码。

下面是其他网友的补充

js 中 !!的用法

!!是将表达式强制转化为bool值的运算,运算结果为true或false,表达式是什么值,结果就是对应的bool值,不再取非。

不是取非再取非的意思!!!

!!false=false;    要注意false和“false” 的区别!!!!!

!!"false"=true;

!!true=true;

!!(NaN || undefined || null || 0 || ' ')=false;

var o={flag:true}; var test=!!o.flag;//等效于var test=o.flag||false; alert(test);

由于对null与undefined用!操作符时都会产生true的结果,
所以用两个感叹号的作用就在于,
如果明确设置了o中flag的值(非 null/undefined/0""/等值),自然test就会取跟o.flag一样的值;
如果没有设置,test就会默认为false,而不是 null或undefined。

相关文章

  • three.js欧拉角和四元数的使用方法

    three.js欧拉角和四元数的使用方法

    这篇文章主要给大家介绍了关于three.js欧拉角和四元数的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者使用three.js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • Javascript 判断函数类型完美解决方案

    Javascript 判断函数类型完美解决方案

    在判断函数类型时,我们通常使用typeof方法,一般情况下,它会得到我们所预想的效果。
    2009-09-09
  • 一个表格收缩展开的函数

    一个表格收缩展开的函数

    一个表格收缩展开的函数...
    2006-07-07
  • JS如何获取地址栏的参数实例讲解

    JS如何获取地址栏的参数实例讲解

    本篇文章给大家带来了关于JS如何获取地址栏的参数实例讲解,有需要的朋友们参考下。
    2018-10-10
  • 利用JS实现AI自动玩贪吃蛇

    利用JS实现AI自动玩贪吃蛇

    这篇文章主要为大家详细介绍了如何利用JS实现AI版自动玩贪吃蛇小游戏,文中的示例代码讲解详细,对我们学习JS游戏开发有一定帮助,需要的可以参考一下
    2022-06-06
  • js更优雅的兼容

    js更优雅的兼容

    对于JS框架开发中的客户端(浏览器)兼容难题,各位想必都不陌生。平常,我们都用if去面对接口不一致以及成堆的bug。然而,这里介绍的方法却可以让兼容更加优雅。
    2010-08-08
  • JavaScript 获得选中文本内容的方法

    JavaScript 获得选中文本内容的方法

    今天希望实现一个,直接在网页上选中文本,点击收藏夹的链接(javascript)即可弹出新窗口(类似“百度搜藏”和“QQ书签”),新窗口中的文本框即显示了选中的文本。
    2009-02-02
  • DOM 事件的深入浅出(一)

    DOM 事件的深入浅出(一)

    本文主要介绍了不同DOM级别下的事件处理程序,同时介绍了事件冒泡和捕获的触发原理和方法。熟练地使用不同级别的DOM事件并且解决相应的浏览器兼容性问题对我们的前端项目开发会很有帮助。
    2016-12-12
  • 老生常谈document.ready和window.onload

    老生常谈document.ready和window.onload

    这篇文章主要介绍了document.ready和window.onload的相关知识,包括document.ready和window.onload的区别,要使用document.ready()或者document.onload()的原因分析,本文结合实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2024-01-01
  • 使用javascript提交form表单方法汇总

    使用javascript提交form表单方法汇总

    这篇文章主要介绍了通过a标签的超链接提交form表单方法汇总,十分的全面细致,也很实用,有需要的小伙伴可以参考下。
    2015-06-06

最新评论