js经典题型

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script>
// typeof 返回值有哪些
// number string boolean, undefined, function, object
// typeof a 返回结果是 number/string/boolean/undefined (数字类型,字符串类型,布尔类型,未定义)
// typeof null => object
// console.log(typeof []);

// console.log(0 == null); // false
// console.log(0 == undefined); // false
// console.log(0 == false); // true 0 == 0
// console.log("" == 0); // true 0 == 0
// console.log(null == false); // false null == 0

// A == B 比较运算符,弱比较,隐式类型转换
// A,B 都是数字的时候,数字的比较 比较数学含义
// 无论 A与B 存在 NaN 返回值就是false
// A,B 都是字符串 字符串比较
// A字符串与B字符串长得一模一样。具有相同的字符串长度,每个位置上的内容相等。
// 'abc' 'abd'
/* A 与 B都是 布尔值
true false
A 与 B 同为 true 或者false 返回值为true,其余为false
null == null
undefined == undefined
null == undefined 相等。
var a; //a 的值就是 undefined
var b = null // null 用来站位
*/
// 引用值的比较 比较的是地址。不能通过模样来比较
/*
[] == [] 不相等
{} == {} 不相等

*/
// 杂交
/*
数字 与 布尔(转换成数字)
数字 与 字符串(转换成数字)
布尔 与 字符串 =》 Number(布尔) == 字符串

都会转化成数字进行比较

原始值与引用值的比较
'' == []
原始值 与 引用值 转化成 原始值与原始值比较
引用值 转化成 原始值 引用值会调用 valueOf 方法或者 toString 方法
null == 0
undefined == 0
*/
// var obj = {
// valueOf() {
// return [];
// },
// toString() {
// return [];
// }
// }
// console.log(obj == 1);
// console.log(obj == 2);

console.log(+0 === -0); // true
console.log([] == []); // false
console.log([] == ""); // true
</script>
</body>
</html>

原文地址:https://www.cnblogs.com/weixin2623670713/p/13574215.html