文章目录
变量提升
数据类型核心操作原理
基本数据类型(值类型)
- number:数字
- string:字符串
- boolean:布尔类型
- null:空对象指针
- undefined:未定义类型
- bigint:大数类型
- symbol:唯一值类型引用数据类型 是操作地址的
- 标准普通对象{}
- 标准特殊对象
- []数组
- /^ $/正则 RegExp
- Math
- Date
- ……
可执行(调用)对象 funtion(){}
非标准特殊对象
js代码运行在浏览器中,是因为浏览器给我们提供了一个供js代码执行的环境=>全局作用域(window/global)
栈内存:作用域
1.提供一个供代码自上而下执行的环境
2.存储基本数据类型,值存储=>当栈内存被销毁,存储的基本值也被销毁了
堆内存:引用值对应的空间
1.存储引用数据类型的=>当堆内存被销毁,引用值彻底消失
堆内存释放:当堆内存没有任何变量或者其他东西占用,浏览器会在空闲的时候,自主的进行内存回收,把所有不被占用的堆内存销毁掉(谷歌浏览器) xxx=null
变量提升
当栈内存(作用域)形成,js代码执行之前,浏览器会把所有带有var/function关键词的进行提前‘声明’或者‘定义’,这种预先处理机制称之为‘变量提升’。
声明(declare):var a(默认值undefined)
定义(defined):a=12(定义其实就是赋值操作)
【变量提升阶段】
• 带var的值只声明不定义;带function的既声明又定义。
• 只提升等号左边的变量。
• 不管条件成不成立,都要进行变量提升。
•