变量提升:js引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行的运行
表达式不能混淆,赋值表达式(=)、严格相等运算符(===)和相等运算符(==).尤其是赋值表达式不具有比较作用。js做相等比较时提供了两种相等运算符:==和===也就是说==(相等运算符)比较的是两个值是否相等,同时相等运算符不会严格区分两个值的数据类型,如果两个值不是同一类型,==(相等运算符)会将它们转换成同一个类型,再对两个值做对比,而===(严格相等运算符)当数据类型不同时,会直接返回false,不会进行类型转换。
既然有==(相等运算符)和===(严格相等运算符)就有!==(严格不等运算符)与严格相等运算符的结果互为相反数,同样存在!=(不等运算符)
Note: 您可能会看到有些人在他们的代码中使用==
和!=
来判断相等和不相等,这些都是JavaScript中的有效运算符,但它们与===
/!==
不同,前者测试值是否相同, 但是数据类型可能不同,而后者的严格版本测试值和数据类型是否相同。 严格的版本往往导致更少的错误,所以我们建议您使用这些严格的版本。
let和const不再支持变量提升