数据类型与全等于
PS:重要的知识 不可忘却
常见的基本数据类型
Undefined、Null、Boolean、Number、String、Symbol;
复合数据类型
Object、Array、Function
全等于(===)
不会进行类型转换:当使用全等于进行比较时,如果两个操作数的类型不同,则直接返回 false,不会尝试转换类型。
值和类型都必须相等:仅当两个操作数在没有类型转换的情况下相等时,才返回 true。
**得知在全等于时,只要数据类型不同 则始终为false**
接下来做测试在==状况时,各基本数据类型之间的结果(没有太大意义可选择阅读)
// Undefined 与 Null 比较
// 特殊!按照 ECMAScript 规范,它们被视为等价的空值。
console.log(undefined == null); // 输出:true
// Undefined 与 Boolean 比较
console.log(undefined == true); // 输出:false
console.log(undefined == false); // 输出:false
// Undefined 与 Number 比较
console.log(undefined == 0); // 输出:false
console.log(undefined == 1); // 输出:false
// Undefined 与 String 比较
console.log(undefined == ''); // 输出:false
console.log(undefined == 'some string'); // 输出:false
// Null 与 Boolean 比较
console.log(null == true); // false
console.log(null == false); // false
// Null 与 Number 比较
console.log(null == 0); // false
console.log(null == NaN); // false
// Null 与 String 比较
console.log(null == ""); // false
console.log(null == "null"); // false
// Boolean 与 Number 比较
console.log(true == 1); // true
console.log(false == 0); // true
// Boolean 与 String 比较
console.log(true == "1"); // true
console.log(false == "0"); // true
// Number 与 String 比较
console.log(0 == "0"); // true
console.log(1 == "1"); // true
console.log(NaN == "NaN"); // false (特殊情况: NaN 不等于任何值,包括它自己)
**
得出除Boolean与Number(数字非0和非负数时为真,否则为假)
Boolean与String(只要不为空字符串即为真)
Number与String(数字和字符串内容一样即为真)
其余情况都为假
复合数据类型测试(过程不再写),得出结果都为false
**
总结:在实际开发中,最好使用全等于,有时需要根据后台数据
先进行判断某项属性是否有值再渲染视图,
这时一定要明确根据数据类型什么情况下是true什么情况下是false。
比如:常见的会有null、[]、{}或是undefined、"",
if(''){console.log(123)}//undefined
if('1'){console.log(123)}//123
if({}){console.log(123)}//123
if([]){console.log(123)}//123
数组可以根据length的来判断不为空、
对象可以根据obj && Object.keys(obj).length > 0来判断不为空。
拓展:在对比数字精度时,例如:1.00===1是为true的
(JavaScript中,所有的数字都是以64位浮点数形式存储的(遵循IEEE 754标准)
实际上是在比较两个相同类型(Number)且值相等的变量)。
NaN:NaN是一个特殊的值,代表"Not-a-Number"(不是一个数字)。
尽管NaN用于表示非数字,但它本身按照技术定义,却是属于数字类型(Number)。
产生的原因:无法返回具体数字结果的数学运算中。例:
非数字与数字进行算术运算:
console.log("abc" * 2); // NaN
对非数字应用数学函数:
console.log(Math.sqrt(-1)); // NaN
0除以0的结果:
console.log(0 / 0); // NaN
Infinity除以Infinity的结果:
console.log(Infinity / Infinity); // NaN
特性:有一些独特的特性,最重要的是它与任何值都不相等,包括它自身。
console.log(NaN === NaN); // false
因此,JavaScript提供了isNaN()函数来检查一个值是否是NaN。isNaN()会尝试将其参数转换为数字,如果转换后的值是NaN,则返回true。