有些时候我们在别人的博客或者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.
以上就是我对 !! 隐式转换的理解啦,希望大家在阅读这篇文章时可以收到一些收获和帮助.我们下期见!!!