谈谈JS中的!!

 更新时间:2017年12月07日 10:55:52   作者:钻石悦  
!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false。下面看看通过本文给大家介绍了JS中的!!,需要的朋友参考下吧

!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false。

var a;
var b=!!a;

a默认是undefined。!a是true,!!a则是false,所以b的值是false,而不再是undefined,也非其它值,主要是为后续判断提供便利。

因为javascript是弱类型的语言(变量没有固定的数据类型)所以有时需要强制转换为相应的类型,类似的如:

a=parseInt(“1234″)
a=”1234″-0 //转换为数字
b=1234+”” //转换为字符串
c=someObject.toString() //将对象转换为字符串

其中第1种、第4种为显式转换,2、3为隐式转换

布尔型的转换,javascript约定规则为

false、undefinded、null、0、”” 为 false

true、1、”somestring”、[Object] 为 true

对null与undefined等其他用隐式转换的值,用!操作符时都会产生true的结果,所以用两个感叹号的作用就在于将这些值转换为“等价”的布尔值;

var foo;
alert(!foo);//undifined情况下,一个感叹号返回的是true;
alert(!goo);//null情况下,一个感叹号返回的也是true;
var o={flag:true};
var test=!!o.flag;//等效于var test=o.flag||false;
alert(test);

这段例子,演示了在undifined和null时,用一个感叹号返回的都是true,用两个感叹号返回的就是false,所以两个感叹号的作用就在于,如果明确设置了变量的值(非null/undifined/0/”“等值),结果就会根据变量的实际值来返回,如果没有设置,结果就会返回false。

JS中的“!!”

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。

总结

以上所述是小编给大家介绍的JS中的!!,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 利用纯js + transition动画实现移动端web轮播图详解

    利用纯js + transition动画实现移动端web轮播图详解

    这篇文章主要给大家介绍了利用纯js + transition动画实现移动端web轮播图的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • 手把手教你如何排查Javascript内存泄漏

    手把手教你如何排查Javascript内存泄漏

    本文将通过一些常见的FAQ来带大家一起学习一下怎么用工具定位javascript里的内存问题,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-06-06
  • JS动态生成年份和月份实例代码

    JS动态生成年份和月份实例代码

    本文给大家分享两段代码来通过js动态生成年份和月份功能,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-02-02
  • 使用JS轻松实现ionic调用键盘搜索功能(超实用)

    使用JS轻松实现ionic调用键盘搜索功能(超实用)

    这篇文章主要介绍了使用JS轻松实现ionic调用键盘搜索功能(超实用)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • JavaScript对象和字串之间的转换实例探讨

    JavaScript对象和字串之间的转换实例探讨

    从对象的格式可以看出,如果字串的格式定义成 json 格式的, 就可以直接转换为obj了,感兴趣的朋友可以参考下哈
    2013-04-04
  • IE6弹出“已终止操作”的解决办法

    IE6弹出“已终止操作”的解决办法

    导致这个问题产生的原因,一般是因为js(一个比较复杂的js)写在body里面,在body元素加载完之前调用出现问题。显然,解决该问题的方法就是将这一段js放在body元素解析完毕之后。
    2010-11-11
  • JavaScript 图像动画的小demo

    JavaScript 图像动画的小demo

    深夜没睡着,起来翻了翻《JavaScript权威指南》这本书,看了下图形动画的demo,学习学习了
    2012-05-05
  • js实现用户注册协议倒计时的方法

    js实现用户注册协议倒计时的方法

    这篇文章主要介绍了js实现用户注册协议倒计时的方法,是开发会员注册功能时非常实用的技巧,需要的朋友可以参考下
    2015-01-01
  • JS实现在网页中弹出一个输入框的方法

    JS实现在网页中弹出一个输入框的方法

    这篇文章主要介绍了JS实现在网页中弹出一个输入框的方法,实例分析了prompt的用法,可用来设置密码,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • javascript实现拖拽碰撞检测

    javascript实现拖拽碰撞检测

    这篇文章主要为大家详细介绍了javascript实现拖拽碰撞检测,碰撞改变颜色,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03

最新评论