基本类型和引用类型
基本类型
常见的基本类型有:(还有对应包装类)
- number -> Number
- string -> String
- boolean -> Boolean
- null 没有包装类型, Null类型也只有一个值,即null
- undefined 没有包装类型, Undefined类型只有一个值,即undefined
基本类型变量和值是存放在栈中的。
引用类型
常见的引用类型有:
- Object
- Array
- Function
- Data
引用类型的变量存放在栈中,具体的内容是放在堆中。栈中变量的值为堆中的引用(地址)
注意
注意参数传参数时的基本类型和引用类型
首先我们应该明确一点:ECMAScript中所有函数的参数都是按值来传递的。
但是为什么涉及到原始类型与引用类型的值时仍然有区别呢?还不就是因为内存分配时的差别。
1)原始值:只是把变量里的值传递给参数,之后参数和这个变量互不影响。
2)引用值:对象变量它里面的值是这个对象在堆内存中的内存地址,这一点你要时刻铭记在心!
因此它传递的值也就是这个内存地址,这也就是为什么函数内部对这个参数的修改会体现在外部的原因了,因为它们都指向同一个对象。
实例讲解
1 | console.log(typeof(1)); // number |