typeof
typeof可以判断数据类型
typeof 1 => "number"
typeof "w" => "string"
隐式转换
在进行一些操作的时候,js会进行隐式装换
当前面加上-或+号时会被隐式装换为数字
a = "10";
+a ⇒ Number(a);
-a ⇒ Number(a);
+"5" ⇒ Number("5");
+"a" ⇒ Number("a"); // 因为装换失败其值为NaN
做+运算时,如果有字符串,则会拼接
1 + "a" ⇒ "1a"
1 + "1" ⇒ "11"
1 + 1 + "1" ⇒ "21" // 程序从左往右,不是字符串时正常相加,到字符串时则进行了拼接
1 + "1" + 1 ⇒ "111"
在进行比较的时候也会进行转换
但是两边都为字符串时,会取得第一个字符的ascii码做比较
1 > "2" ⇒ 1 > 2 ⇒ false
"1" > "a" ⇒ false
"bac" > "a" ⇒ true
// 当两边的数据类型相同时,则会判断字符串是否相等
"ac" == "a" ⇒ false
"ac" == "ac" ⇒ true
// 当两边的数据类型不相同时,则会优先装换为数字进行判断
1 == "1" ⇒ true
// 无法被判断时则为false
1 == "f" ⇒ false
如果不想它们进行隐式装换则使用 ===
和 !==
它们和 == 和 != 的效果是一样的,唯一不同就是不会进行类型转换
1 === "1" ⇒ false
1 !== "f" ⇒ true