Notes Of JS & TS
JS的数据表达
JS提供了三种方式来表达一个数据:
- 变量
- 字面量
- 表达式
程序中任何需要数据的地方,都可使用上面任意一种数据表达。
核心概念
数据的存储和传递(值和引用)
JS中,变量存储数据的方式有两种:值和引用。
值类型
-
数值、字符串、布尔值等基本类型的数据,值类 型的数据是存储在栈内存中的基本数据,变量存储的是值本身。
- 数值:123, 456
- 字符串:"hello"
- 布尔值:true/false
引用类型
- 对象、数组、函数等复杂类型的数据,引用类型的数据是存储在堆内存中的对象,变量存储的是对象的地址。
函数形参传递
-
值类型:形参和实参是两个独立的变量,改变形参不会影响实参
-
引用类型:形参是实参地址的拷贝,和实参指定同一地址,改变形参会影响实参。如果对形参重新赋值给新变量,则实参不受影响。
数据的作用域
JS有两种作用域:全局作用域和函数作用域。
- 内部的作用域可以访问外部,反之则不行。访问时从内向外依次查找。
- 如果在内部作用域中访问了外部,则会产生闭包。
- 内部作用域能访问的外部作用域,取决于函数定义的位置,和调用无关。
作用域内定义的变量、函数声明会提升到作用域的顶部。