7种数据类型:基本类型【数值(number)、字符串(string)、布尔(boolean)、symbol、null、undefined】、复杂类型【对象(object)】
数值(number):1、当数值以0开头时,注意js会转化为八进制。 2、数值中的e(E)表示乘10的次方,例:1.23e2 = 123。 3、js中有正负0,其他情况下没有区别,只有在当分母时,返回值不相等。 4、二进制前缀0b(0B);八进制有前缀0o(0O);十进制没有前导0的数值;十六进制前缀0x(0X)。默认情况下,js所有进制转为十进制。
字符串(string):1、字符串长度包含空格和回车,必要时可以加转义符 \ 。 2、字符串需要2行或以上时,最好用"12345"+"67890"语法("12345 \回车 67890"这个语法容易引起错误)。 3、ES6新增语法(`12345 回车 67890`)也可以到达2的效果。
布尔(boolean):有true和false两个值。"a && b时",两个为真才是true,其他为false;"a || b"时,两个为假才是false,其他为true。
null和undefined的区别:1、声明变量没有赋值——undefined。 2、声明一个对象现在不想给值——null。 3、一个非对象现在不想给值——undefined。(推荐 惯例)
(undefined派生自null)
对象(object):1、对象里的key可以为空字符串。例:var person{ ' ' = 'John' } 。 2、对象里的key不加单双引号时,按标识符规范来取key名 3、遍历对象里的所有key、value用for in 。例:for( var key in person ) {console.log( key , person[key] ) } 4、typeof用来查看数据类型。两个bug(当元素为null时,数据类型为object;当元素为function时,数据类型为function) 5、对象里的value为对象本身时,例:var person = { 'name ' = 'John' , 'xxx' = person },可以循环引用。例:a.xxx.xxx.xxx.xxx.name
optional chain语法(key?.a?.b?.c)