JS中双感叹号 !! (隐式转换)的作用

有些时候我们在别人的博客或者js代码中时常会看到 !! 的出现,会疑惑到 !! 这玩意儿到底是什么,为什么要这样写,有什么作用. 别急,我这就带你去了解

首先我们先了解它是什么?

当 !! 去掉一个 ! 时,你就会知道这是js逻辑运算符中的一种,这里简单阐述一下逻辑运算符: ||或 &&与 !非

		// 或 || 两边同时为假,结果才为假,一边为真,结果就是真
		console.log( true || false ); // true
		console.log( false || true);  // true
		
		// 与 && 两边同时成立, 最终结果才能成立, 只要一边为假, 结果就是假
		console.log( true && true ); // true
		console.log( true && false); // false
		
		// 非 ! 真转变成假, 假转变成真
		console.log( !false ); // true
		console.log( !true );  // false

!! 是什么?

!! 的逻辑是"非非",即在逻辑“非”的基础上再"非"一次。!! 一般用来将变量(不是布尔变量,是其他类型也可以)强制转换为布尔类型的数据(boolean),也就是只能是 true 或者 false.因为 js 是弱类型的语言,变量没有固定的数据类型.有时我们为了判断一个数据类型到底是否存在,这时我们需要强制转换为相应的类型来进行判断.

!! 作用是什么?

判断字符串是否存在:

		var str = '渐渐的忘记忘记了时间'
        alert(str) // 渐渐的忘记忘记了时间
        alert(!str) // false
        alert(!!str)  // true

判断对象是否存在:

var obj = {name:'张三',age:18,sex:'boy'};
        alert(obj) // [object Object]
        alert(!obj)  // false
        alert(!!obj)  // true

判断数组是否存在:

var arr = [0,1,2,3,4,5];
        alert(arr) // 0,1,2,3,4,5
        alert(!arr) // false
        alert(!!arr) // true

判断null(空)值是否存在:

var a = null;
        alert(a) // null
        alert(!a) // true
        alert(!!a) // false

判断undefined(未定义)值是否存在:

var b = undefined; 
        alert(b) // undefined
        alert(!b) // true
        alert(!!b)  // false

注意:

var a = 0 || "" || NAN || undefined || null || false	
alert(!!a) 	// 均返回false

在隐式转换: 0 空字符串’’ NaN undefined null false 时,用一个感叹号返回的都是true,用两个感叹号返回的就是false. 如果明确设置了变量的值(除了 null undefined 0 等一些数值),结果就会根据变量的实际值来返回,如果没有设置,结果就会返回false.

以上就是我对 !! 隐式转换的理解啦,希望大家在阅读这篇文章时可以收到一些收获和帮助.我们下期见!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值