美文网首页
JS-day05-5.2

JS-day05-5.2

作者: xcx时光你好 | 来源:发表于2018-05-05 17:36 被阅读0次

简单类型和复杂类型的区别

简单数据类型,基本类型/值类型,==复杂类型又叫做引用类型==

==值类型==:简单数据类型,基本数据类型,在存储时,==变量中存储的是值本身==,因此叫做值类型。

==引用类型==:复杂数据类型,在存储时,==变量中存储的仅仅是地址(引用)==,因此叫做引用数据类型。

** 堆和栈**

堆栈空间分配区别:
        1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;
        2、堆(操作系统): 存储复杂类型(对象),一般由程序员分配释放, 若程序员不释放,由垃圾回收机制回收,分配方式倒是类似于链表。

注意

JavaScript中没有堆和栈的概念,此处我们用堆和栈来讲解,目的方便理解和方便以后的学习。

基本类型在内存中的存储

复杂类型在内存中的存储

基本类型作为函数的参数

复杂类型作为函数的参数

     // 下面代码输出的结果?
function Person(name,age,salary) {
  this.name = name;
  this.age = age;
  this.salary = salary;
}
function f1(person) {
  person.name = "ls";
  person = new Person("aa",18,10);
}

var p = new Person("zs",18,1000);
console.log(p.name);//zs
f1(p);
console.log(p.name);//ls

案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        // 数据类型
        // 简单数据类型,基本数据类型/值类型
        // Number String Boolean Null Undefined
        // 复杂数据类型,引用类型
        // Object
        // 数据在内存中的存储:
        // 简单数据类型,存储在内存中的栈上
        // 复杂数据类型,存储在内存中的堆上
        // 访问简单数据类型比访问复杂数据类型速度快
         
           // 1.简单类型在内存中如何存储?
           // var n1=10;
           // var n2=20;
           // n2=n1;
           // n1=20;
           // console.log(n1,n2);// 20  10
 
            // 2.复杂数据类型在内存中如何存储?
            // Object 所有的对象都是基于Object
             // function Person(name,age) {
             //     this.name=name;
             //     this.age=age;
             //     this.sayHi=function() {
             //         console.log(this.name+':hello');
             //     }
             // }
             //  var p1=new Person('zs',18);
             //  console.log(p1.name); //zs
             //  p1.sayHi(); //zs:hello
             //  var p2=p1;
             //  p2.sayHi(); //zs:hello

             //3.简单类型数据作为函数的参数,在内存中如何存储?
             //简单类型数据存储在内存中的栈上
             // function fn(a,b) {
             //     a=a+1;
             //     b=b+1;
             //     console.log(a); //11
             //     console.log(b); //21
             // }
             // var x=10;
             // var y=20;
             // fn(x,y);  //调用函数时将x、y的值赋给a、b
             // //x、y的值不会受函数内部执行过程的影响,a和b是两个独立的变量
             // console.log(x); //10
             // console.log(y); //20

             //4.复杂 类型数据作为函数的参数,在内存中如何存储?
             // function Person(name,age) {
             //     this.name=name;
             //     this.age=age;
             //     this.sayHi=function() {
             //         console.log(this.name+':hello');
             //     }
             // }
             // var P=new Person('zs',18);
             // function fn(person) {
             //     person.name='ls';
             //     person=new Person('ww',20);
             //     console.log(person.name); //ww
             // }
             // fn(P);
             // console.log(P.name); //ls

             //5. 数组也是复杂数据类型
             // 对数组排序,从小到大--冒泡排序
             function sort(array) {
                //外层循环控制趟数
                for(var i=0;i<array.length-1;i++) {
                    //假设排好序了
                    var isSort=true;
                    //内层循环控制比较的次数
                    for(var j=0;j<array.length-1-i;j++){
                        if (array[j]>array[j+1]) {
                            isSort=false;
                            //交换位置
                            var t=array[j];
                            array[j]=array[j+1];
                            array[j+1]=t;
                        }
                    }
                    //判断是否排好了
                    if (isSort) {
                        break;
                    }
                }
                // return array;
             }
             // var array=[3,44,2,66,88];
             // function fn(arr) {
             //     arr[0]=-1;
             // }
             // fn(array);
             // console.log(array);
             var array=[3,44,2,66,88];
             var r=sort(array);
             console.log(r);
             console.log(array);
    </script>
</head>
<body>
    
</body>
</html>

相关文章

  • JS-day05-5.2

    简单类型和复杂类型的区别 简单数据类型,基本类型/值类型,==复杂类型又叫做引用类型== ==值类型==:简单数据...

网友评论

      本文标题:JS-day05-5.2

      本文链接:https://www.haomeiwen.com/subject/yvcjrftx.html