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

2018-10-13  本文已影响0人  hi__world
<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>

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

上一篇下一篇

猜你喜欢

热点阅读