我正在参加「掘金·启航计划」
1.5个false值:数字0、空字符串""、null、undefined和NaN都会被转换成false。
2.JavaScript 中有八种基本的数据类型:
- 七种原始数据类型:
-
number用于任何类型的数字:整数或浮点数,在±(253-1)范围内的整数。bigint用于任意长度的整数。string用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。boolean用于true和false。null用于未知的值 —— 只有一个null值的独立类型。undefined用于未定义的值 —— 只有一个undefined值的独立类型。symbol用于唯一的标识符。
- 以及一种非原始数据类型:
-
object用于更复杂的数据结构。
3.运算符的优先级
| 优先级 | 名称 | 符号 |
|---|---|---|
| … | … | … |
| 15 | 一元加号 | + |
| 15 | 一元负号 | - |
| 14 | 求幂 | ** |
| 13 | 乘号 | * |
| 13 | 除号 | / |
| 12 | 加号 | + |
| 12 | 减号 | - |
| … | … | … |
| 2 | 赋值符 | = |
| … | … | … |
let apples ="2";let oranges ="3";
alert( apples + oranges );// "23",二元运算符加号合并字符串
// "+apples + +oranges" 中的一元加号先生效;在二元运算符加号起作用之前,所有的值都被转化为了数字
alert( +apples + +oranges ); // 5
4.前置运算符和后置运算符
前置形式返回一个新的值,但后置返回原来的值(做加法/减法之前的值)。
5.值的比较
1.在非严格相等 == 下,null 和 undefined 相等且各自不等于任何其他的值。
undefined>0 // (1)false
undefined==0// (2)false
undefined<0 // (3)false
(1) 和 (2) 都返回 false 是因为 undefined 在比较中被转换为了 NaN,而 NaN 是一个特殊的数值型值,它与任何值进行比较都会返回 false。
(3) 返回 false 是因为这是一个相等性检查,而 undefined 只与 null 相等,不会与其他值相等。
null > 0 // (1) false
null == 0 // (2) false
null >= 0 // (3) true
undefined 和 null 在相等性检查 == 中不会进行任何的类型转换,它们之间互等外,不会等于任何其他的值,所以(2)中 null == 0 会返回 false。
进行值的比较时,null 会被转化为数字,因此它被转化为了 0。这就是为什么(3)中 null >= 0 返回值是 true,(1)中 null > 0 返回值是 false。
6.类型转换
易错点:
对 undefined 进行数字型转换时,输出结果为 NaN,而非 0。
对 "0" 和只有空格的字符串(比如:" ")进行布尔型转换时,输出结果为 true。
布尔型转换遵循以下规则:
| 值 | 变成…… |
|---|---|
| 0, null, undefined, NaN, "" | false |
| 其他值 | true |
数字型转换遵循以下规则:
| 值 | 变成 |
|---|---|
| undefined | NaN |
| null | 0 |
| true / false | 1 / 0 |
| string | “按原样读取”字符串,两端的空白字符(空格、换行符 \n、制表符 \t 等)会被忽略。空字符串变成 0。转换出错则输出 NaN。 |