阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      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方法的原理;

      目录
      目录