JavaScript,如何理解双感叹号!!操作?变量类型变布尔
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
本文说一下JavaScript
里面的!!
操作,也可以称之为“非非”操作。这个操作表示什么意思呢?在实际的编程之中,它的作用是把变量变成布尔型,可以用于判断非空/非false,或者说“变量是否真实存在”。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验总结。本文测试环境:nodejs@20.18.0
,chrome@132.0.6834.84
。本文讲述单感叹号/双感叹号操作。
null 和 undefined
首先处理Null
和undefined
。这两个就是负面变量的代言人。
var s = null;
console.log(s); // null
console.log(!s); // true
console.log(!!s); // false
var s;
console.log(s); // null
console.log(!s); // true
console.log(!!s); // false
var s = undefined;
console.log(s); // undefined
console.log(!s); // true
console.log(!!s); // false
代码运行的结论就是:在某种意义上来说,null
和undefined
就相当于false
。
空字符串与非空字符串
var s = "";
console.log(s); //
console.log(!s); // true
console.log(!!s); // false
令人意外的是,空字符串的表现,和null
一致。从某种意义上来说,空字符串就是null
,就是false
。而非空字符串(包括空格)的结论,完全相反。
var s = " ";
console.log(s); //
console.log(!s); // false
console.log(!!s); // true
空数组、空对象
空数组、空对象和空字符串的结论,完全相反。它们并不被认为是一种null
或者false
。
var s = [];
console.log(s); // []
console.log(!s); // false
console.log(!!s); // true
var s = {};
console.log(s); // {}
console.log(!s); // false
console.log(!!s); // true
数字0、1
数字0
,会被认为是false
的代言词。这个结论是深入人心的。并不需要进行讨论。
var s = 0;
console.log(s); // []
console.log(!s); // true
console.log(!!s); // false
var s = 1;
console.log(s); // {}
console.log(!s); // false
console.log(!!s); // true
var s = 2;
console.log(s); // {}
console.log(!s); // false
console.log(!!s); // true
结语
更多苏南大叔的JavaScript
文章,请参考苏南大叔的博客文章:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。