美文网首页
JS基础案例23-简单数据类型和复杂数据类型的存储和传递问题

JS基础案例23-简单数据类型和复杂数据类型的存储和传递问题

作者: hi__world | 来源:发表于2018-10-13 17:04 被阅读0次
    • 简单数据类型

    <script>
       var num=1;
       function fn1(ele) {
          return ele=ele*10;
       }
        fn1(num)//代码写好就要运行一下,运行一遍fn1的函数代码块,结果为:num=num*10
    // 来解析一下
        // 开始时  num=1
        // 后 来  执行了函数  num=num*10
    
    // 猜一猜,num现在是等于1 还是等于 10
       console.log(num)
       //答案是1 ,为什么已经执行了一遍  num=num*10 啦,num却没有变呢。
        
    //我们看,num的数据是Number类型的。属于简单数据类型,有的叫原始数据类型,还有的叫基础数据类型,其实我们都一样。
    // 你用函数参数传递,js会开辟一个新内存空间,并没有动老num的。所以num还等于1。所以想改变简单类型的数据不能通过函数参数传递。可以直接在函数代码块里改。
    
    // 例如:
    var newNum=1;
    function  fn2(ele) {
        newNum=newNum*10;//直接在代码块里改,不通过参数传递再改。
    }
    fn2(newNum)//要先执行一下,否则JS不会解析函数内部的代码。
    console.log(newNum)
    </script>
    
    • 复杂数据类型

    <script>
        var obj={name:"王银辉"}//看看复杂数据类型用参数传递会怎么样。
        function fn1(ele) {
            ele.name="王大雷"//复杂数据类型可以做为参数传递,因为只要是复杂数据类型,JS不会开辟新空间,还在老地址操作,所以你再打印。也已经是改过的啦。
        }
    
        fn1(obj);
    
        console.log(obj)
    </script>
    

    简单数据类型传值
    复杂数据类型传址

    相关文章

      网友评论

          本文标题:JS基础案例23-简单数据类型和复杂数据类型的存储和传递问题

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