JavaScript 变量的类型

🌙
手机阅读
本文目录结构

变量的数据的代言人,变量类型是指所代表数据的类型;

分为值类型和引用类型:typeof可以简单的检测数据类型

值类型的特点:

  • 占用空间固定,保存在栈中;
  • 保存与复制都是值本身;
  • 使用typeof检测数据的类型;
  • 基本数据类型是值类型;

引用类型的特点;

  • 占用空间不固定,保存在堆中;
  • 保存与复制的是指向对象的一个指针;
  • 使用instanceof检测数据的类型;
  • 使用new()方法构造出的对象是引用型;

基本数据类型和引用数据类型详解;

ECMAScript规定变量包含两种不同数据类型的值,基本类型值和引用类型值;

在给变量赋值的时候,解析器必须要明确这个值是基本类型还是引用类型值,因为他们的赋值方式是不同的;

string/number/boolean/null/undefined都是基本数据类型;因此可以操作保存在变量中是实际值,此时变量储存的是实际的值;

而引用类型的值是保存在内存中的,此时变量储存的是内存的地址,而不是真实的值;

而我们操作引用类型的变量时,实际操作的是它引用地址对应的对象,而不是直接操作对象的;

基本类型和引用类型的操作原理

var number1= 1,
    number2=number1;
number1=2;//改变了number1的值
console.log(number1);//2
console.log(number2);//1
console.log(number1===number2);//false

var obj1={name:"zhu"},
obj2=obj1;
obj1.name="zhuanbang";
console.log(obj1.name,obj2.name);//zhuanbang,zhuanbang
console.log(obj1.name===obj2.name);//true

原理图如上;

基本数据类型,也叫原始数据类型,不可能数据类型;引用数据类型,也叫对象类型和可变类型;

不可变的意思是,这个值是不可以改变的,如果变量修改了字符串,以前的字符串会销毁,然后再次赋值;

而可变的意思是可以改变对象的属性值;这只是对数据来说的,javascript本身是可以自由进行数据类型转换的,javascript的变量是无任何类型的,只是一个标识符,变量可以赋值任何类型的值;

string的所有方法,都是不会改变原有字符串的,比如toUpperCase返回的值,其实是一个新字符串,原有字符串不变,这就是string方法的原理;

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了