js-数据类型与保存方式

原始数据类型: number,string,boolean,undefined, null,object
基本类型(简单类型),值类型: number,string,boolean
复杂类型(引用类型):object(使用typeof 判断的数组和对象返回的都是object)
空类型:undefined,null

1、 值类型的值在哪一块空间中存储?栈中存储

 //值类型之间传递,传递的是值
//案例一
   var num=10;
   var num2=num;//传递的值

//案例二
          function f1(x) {
           x=100;
        console.log(x);//undefined
         }
         var num=10;
         f1(num);
         console.log(num);//10
     //var num=10;值类型,值在栈上;

并不传递地址,不改变地址的值,只是值得传递。注:函数里面的x是函数里面作用域里面的变量,此函数包含函数的变量名提升,所以打印的是undefined

2、引用类型的值在哪一块空间中存储?对象在堆上存储,地址在栈上存储

       //引用类型之间传递,传递的是地址(引用)
       var obj={
      name:"小明"
    };
    function f2(obj2) {
      obj2.name="小红";
    }
    console.log(obj.name);//小明
    f2(obj);
    console.log(obj.name);//小红
         //var obj={};复杂类型,对象在堆,地址(引用)在栈(直接改变地址中的值)

3、总结

简单类型传参:是把栈空间中的值复制一份传过去,形参与实参操作的不是同一个对象。
复杂类型:把栈空间中的地址传过去,形参与实参保存同一个地址,直接改变地址中的值,操作同一个对象。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。