JS 的学习理解--->变量

271 阅读3分钟

title: JS 的学习理解--->变量 grammar_cjkRuby: true

---------- 变量 进程:当一个项目运行起来后,就是一个进程 工厂
进程是操作系统分配和调试资源(cpu和内存)的基本单位
线程:真正完成操作的是线程 JS是单线程的,默认情况下js从上到下执行操作
js的线程也叫做主线程,当线程遇到耗时任务时,它就找别的线程来帮忙。别的线程把活干完后,需要把结果给主线程。

enter description here
什么是变量?
开发软件是用来处理数据的,数据保存在内存中(小格子)
每个小格子都有一个地址,可根据该地址找到这个小格子
给每个小格子取一个别名就叫做变量名
变量 = 变量名+变量值

声明变量:var let
var声明:var a; 缺陷(重复声明,遗漏声明,提升)
let声明:与var相似,用来定义变量
特点: 1.let声明的变量只在let所在的代码块内有效

enter description here
2.let没有"变量提升"的现象
7
3.let不会成为window对象的属性 enter description here
4.暂存性死区(TDZ)在代码块内,使用let命令声明变量之前,该变量都是不可用的。
enter description here
5.不能重复定义
enter description here
const声明常量:声明常量,常量的值不能改变 特点:1.定义完成后,不能修改值
enter description here
2.不能重复声明
3.没有提升
4.声明时必须赋值 eg: const PI(错误) const PI = 3.14(==正确==)
5.是变量在栈区的值不能改动,保存的数据在堆区的信息是可以改动的
enter description here
enter description here
enter description here
全局变量 和 局部变量:
分界点:函数 声明变量使用var,let 声明函数用function
全局变量在函数内外都可以访问
局部变量只能在函数内部访问,在函数外不能访问
数据类型
针对两种不同的数据,分配不同的内存空间----->为了合理利用空间 两类:
基本数据类型:
number,string,boolean,undefined,null
引用数据类型:
object(array,function)
-------
JS代码的解析与执行
1,代码块可以有多个,上面的代码块不能使用下面的代码块中的数据,下面代码块可以使用上面代码块中的数据。
2,预编译,在Js代码真正执行这前有一个预编译的过程
提升:
提升变量: 提升代码块的最前面
提升函数:
执行:
3,变量提升
var变量可以提升,没有var的变量是不会提升的
循环变量也可以提升
函数内部加var的变量也会提升,提升到了函数内部的最前面
4,提升函数
函数声明也会提升,提升到代码块的最前面
函数表达式不会提升,原因函数表达式本质是一个变量值
数据的存储
两类:
基本数据类型:栈区(nubmer,string,boolean,undefiend,null)
引用数据类型:堆区 object(array,function)