1.暂时性死区(TDZ)会使typeof失效,这种情况下typeof会报错
2.块级作用域中的函数声明类似于var,存在提升(见《ES6标准入门 3rd》p25)
3.NaN === NaN 与 NaN == NaN,结果是false
4.typeof NaN,返回'number' ,可以使用Number.isNaN()来判断NaN
5.NaN、null、undefined、''(空字符串,不包含任何字符)、false、0在转化为boolean类型时都是false
6.js的7种数据类型:Undefined、String、Null、Number、Boolean、Object、Symbol
7.成员运算符(.)后总是字符串,对象内部的属性名也总是字符串或者Symbol(Symbol时需要使用[])
8. .5 ===0.5,浮点数中 . 就是 0 .
9.global对象独立于模块,也就是说一个运行的node应用中只有一个全局的global对象
10.this既能指向对象,也能指向实例对象
11.弱应用,不计入引用计数中(js gc依赖引用计数),垃圾回收时不考虑弱应用
12.闭包:闭包是由函数以及创建该函数的词法环境组合而成。这个环境包含了这个闭包创建时所能访问的所有局部变量。
13.js中的函数在编译/预编译期间以最高优先级被处理,也就是说可以先调用再定义
13.1:函数提升的优先级大于变量提升的优先级
13.2:函数提升优先级比变量提升要高,且不会被变量声明覆盖,但是会被变量赋值覆盖。
13.3:同一个标识符的情况下,变量声明与函数声明都会提升;函数声明会覆盖变量声明,但不会覆盖变量赋值,即:如果声明变量的同时初始化或赋值那么变量优先级高于函数。
14.JavaScript 的字符串是不可变的(immutable)
15.JavaScript的 try-catch 机制不能用来截获异步方法产生的错误, 当回调函数被调用时,程序早已退出其周围的代码(包括 try-catch 部分)。 在回调函数内抛出异常在大多数时候会使 Node.js 进程崩溃。 但如果启用了 domains,或者有与 process.on('uncaughtException')
相关联的异常处理器,就可以截获这种错误。
参考:
很零散,就不列了