javascript知识点
-
变量声明/变量提升/暂时性死区TDZ/全局污染
- 详细:https://www.cnblogs.com/shangsi/p/12033985.html
暂时性死区TDZ:
指变量在作用域内已经存在,但必须在let/const
声明后才可以使用。TDZ 可以让程序保持先声明后使用的习惯,让程序更稳定。
报错形式-----Uncaught ReferenceError: Cannot access 'hd' before initialization
-
严格模式
- 严格了很多事情就简单了
- 非严格模式时,你甚至可以使用关键字当做变量名
- 严格模式下当前作用域与子作用域都受影响
-
块作用域
-
传值与传址
-
null与undefined
- 最初只有null没有undefined,很多语言中都有null而没有undefined
-
null和undefined尽管有不同,但是都表示“值的空缺”。用“==”认为两者相等,需要用严格相等运算符“===”来区分它们。
null | undefined | |
是否关键字 | 是javascript的关键字 | 不是关键字 |
作用 | 表示一个特殊值,常用来描述“空值” | 表示值的“空缺”、变量没有初始化 |
应用typeof方法 |
tpyeof null // object 因此可以认为null是一个特殊对象 |
typeof undefined // undefined |
值类型-->Null类型 而null常被当做null类型的唯一成员 |
值类型-->Undefined类型 ECMAScript3中将undefined认为可读写的变量, 在ECMAScript5中修正,改为只读。 |
|
引用类型的值如果没有初始值,则定义为null |
基本类型的值如果没有初始值,则定义为undefined 函数没有返回值时,默认定义返回undefined 形参没有值时,默认定义为undefined |
|
!!null // false | !!undefined // false | |
无方法 | 无方法 | |
使用情况区分 |
null是表示程序级别、正常的在意料之中的值的空缺。 当需要作为参数传入函数时,用null更为合适 |
undefined是表示系统级的、出乎意料的类似错误的值的空缺 |
展开运算符