基本类型
基本类型:Undefined、Null、Boolean、String、Number、Symbol
可以使用 typeof 运算符确定一个值是哪种基本类型。
按值访问,可以操作保存在变量中的实际的值。
引用类型
对象(Object)、数组(Array)、函数(Function)
引用类型的值是按引用访问的,它是保存在内存中的对象。JavaScript不允许直接访问内存中的位置,所以在操作对象时,实际上是在操作对象的引用。
复制变量值
基本类型
如果从一个变量向另一个变量复制基本类型的值,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的位置上。如:
var num1 = 5;
var num2 = num1;
复制前的变量对象:
| num1 | 5 |
复制后的变量对象:
| num2 | 5 |
| num1 | 5 |
引用类型
当一个变量向另一个变量复制引用类型的值时,也会将存储在变量中的值复制一份到新变量分配的空间中。不同的是,这个值的副本实际上是一个指针,这个指针指向存储在堆中的一个对象。复制结束后,两个变量实际上将引用同一个对象。
var obj1 = new Object()
var obj2 = obj1
引用类型检测
对象(Object)、数组(Array)、函数(Function)
数组
检测方法:
value instance of Array
Array.isArray(value)
方法
- every
- some
- filter
- +forEach
- map
- reduce/reduceRight
Date 对象
RegExp
Function 类型
定义
- 函数声明语法
function sum(a, b) {
return a + b;
}
- 函数表达式
var sum = function(a, b) {
return a + b;
};
函数声明和函数表达式
解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会先读取函数声明,并使其在执行任何代码之前可用(可访问);函数表达式必须等到解析器执行到它所在的代码行,才会真正被解释执行。
函数的 this
this 引用的是函数据以执行的环境对象。
call/apply/bind
- call/apply 扩充作用域,好处:对象不需要与方法有任何耦合关系。
- bind会创建一个函数的实例,其this值会被绑定传给 bind() 函数的值。
Math 对象
- Math.min()
- Math.max()
- Math.ceil() 向上舍入
- Math.floor() 向下舍入
- Math.round() 四舍五入
- Math.abs(num) 返回 num 的绝对值
- Math.exp(num) 返回 Math.E 的num 次幂
- Math.log(num) 返回 num 的自然对数
- Math.pow(num, power) 返回 num 的 power 次幂
- Math.pow(num, power) 返回 num 的 power平方根
- Math.acos(x) 返回 x 的反余弦值
- Math.asin(x) 返回 x 的反正弦值
- Math.atan(x) 返回 x 的反正切值
- Math.atan2(y, x) 返回 x 的反正切值
- Math.cos(x) 返回 x 的余弦值
- Math.sin(x) 返回 x 的正弦值
- Math.tan(x) 返回 x 的正切值