JavaScript中双叹号!!作用示例介绍

 更新时间:2014年09月21日 11:32:18   投稿:whsnow  
!!一般用来将后面的表达式强制转换为布尔类型的数据,因为javascript是弱类型的语言,所以有时需要强制转换为相应的类型

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

经常看到这样的例子:

复制代码 代码如下:

var a;
var b=!!a;

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

!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean),也就是只能是true或者false;
因为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实现商城星星评分的效果

    js实现商城星星评分的效果

    这篇文章主要介绍了js实现商城星星评分的效果,很多网站都有如下图这样的星星打分效果,今天就看下用js怎么实现打分效果,需要的朋友可以参考下
    2015-12-12
  • JavaScript数组操作总结

    JavaScript数组操作总结

    JavaScript中的Array对象与其他编程语言中的数组一样,是一组数据的集合。在JavaScript中,数组里面的数据可以是不同类型的,并具有用于执行数组常见操作的方法,本文整理了一些常用的,需要的可以参考一下
    2022-10-10
  • pageGroup.js实现分页功能

    pageGroup.js实现分页功能

    这篇文章主要为大家详细介绍了pageGroup.js实现分页功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • JavaScript对数字的判断与处理实例分析

    JavaScript对数字的判断与处理实例分析

    这篇文章主要介绍了JavaScript对数字的判断与处理方法,实例分析了javascript判断数字的常见方法与针对数字处理的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • js 三级关联菜单效果实例

    js 三级关联菜单效果实例

    这篇文章介绍了js 三级关联菜单效果,有需要的朋友可以参考一下
    2013-08-08
  • javascript 限制输入和粘贴(IE和火狐3.x下测试通过)

    javascript 限制输入和粘贴(IE和火狐3.x下测试通过)

    限制输入和粘贴的js代码
    2008-11-11
  • DOM3中的js textInput文本事件

    DOM3中的js textInput文本事件

    DOM3中引入了文本事件,其中之一 textInput 。当用户再可编辑区域输入字符时触发该事件。
    2011-04-04
  • JavaScript 垃圾回收机制分析

    JavaScript 垃圾回收机制分析

    同C# 、Java一样我们可以手工调用垃圾回收程序,但是由于其消耗大量资源,而且我们手工调用的不会比浏览器判断的准确,所以不推荐手工调用垃圾回收
    2013-10-10
  • JS设计模式之访问者模式定义与用法分析

    JS设计模式之访问者模式定义与用法分析

    这篇文章主要介绍了JS设计模式之访问者模式定义与用法,结合实例形式分析了javascript设计模式中访问者模式的概念、功能、应用场景及使用方法,需要的朋友可以参考下
    2018-02-02
  • Js过滤空格的实现代码

    Js过滤空格的实现代码

    Js空格过滤代码,这个实用性很强,可以省去用动态语言过滤字符的麻烦,减轻服务器压力,而且JS执行速度较快
    2013-03-03

最新评论