变量

131 阅读2分钟

变量: 就一个名字,标识一块存储空间存在JS世界的哪个位置的一个符号,也叫标识符,存储空间内要么存放数据,要么存放指向数据的指针。

值:变量绑定的内存中存放的数据,数据类型暂不关注,本质是一段二进制数。

值的类型: 变量绑定在内存中的数据如何解码,以什么形式表达出来,分为基本数据类型和引用数据类型。

基本数据类型:在内存中是什么,他表达出来也是什么

引用数据类型:在内存中保存的数据不是真正的数据,实际是一跟指针,指向堆内存中的某个数据,通过指针拿到的数据才是真正我需要的数据。

对象: 无法通过变量直接绑定的数据,要通过引用来间接绑定的数据是对象,对象相对于基本数据类型,它有内部结构,为属性。

JS的变量两种格式

变量 =>  数据						  基本数据类型


变量 =>  数据(指针) =>  数据(对象)			  引用数据类型

赋值: 将一个变量绑定的内存复制到另一个变量绑定的内存中去,与内存中存的数据的含义无关

读: 大量操作符涉及变量的读,加减乘除等等,大多针对于基本数据类型,是按值操作。

写: 改变变量有三个方式,自增 自减 赋值,自增和自减是按值操作,赋值呢? 一样按值,赋值是将一个变量绑定的内存复制到另一个变量绑定的内存中去,与内存中存的数据的含义无关。

属性访问: 只有对象有属性,只对对象使用,显然要访问对象的属性,需要引用指针链接到对象,属于引用操作。

总结:

对于对象数据才有的操作,是引用,比如属性访问

对于基本类型数据才有的操作,是按值,比如加减乘除

对于所有类型数据都有的操作,并且操作的语义和操作数的类型无关,是按值,比如赋值,传参等。