1. 程式人生 > >js值傳遞和引用傳遞練習

js值傳遞和引用傳遞練習

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>值傳遞及引用傳遞的練習</title>
</head>
<script type="text/javascript">
    //?????
    /*
    //1.
    var num1 = 50
    var num2 = num1
    num1 = 100
    console.log(num1)//100
    console.log(num2)//50*/

    /*//2.
    var num = 10
    function f1(num){
        num = 50//這的num是區域性變數。因為和形參一樣。
        num2 = 100//隱式全域性變數
        console.log(num)///50
    }
    f1(num)
    console.log(num)//10
    console.log(num2)//100*/

    /*//3.
    var num1 = 10
    var num2 = 20
    function f1(num,num1){
        num = 30//這的num是區域性變數。因為和形參一樣。
        num1 = 30//這的num1是區域性變數。因為和形參一樣。
        num2 = 30//隱式全域性變數
        console.log(num)//30
        console.log(num1)//30
        console.log(num2)//30
    }
    f1(num1,num2)//函式體內就是 10=30 20=30 num2=30
    console.log(num)//報錯
    console.log(num1)//10
    console.log(num2)//30*/

    //4.
    function Person(name,age,weight){
        this.name = name
        this.age = age
        this.weight = weight
    }
    function f1(person){
        person.name = '張三'
        person = new Person('李四',18,250)//這句話是person物件的地址不是p的,所以p.name還是張三,但是person.name是李四
    }
    var p = new Person('王五',18,500)
    console.log(p.name)//王五
    f1(p)//此時p.name = '張三'
    console.log(p.name)//張三

    /*
    //1.
    var num1 = 50
    var num2 = num1
    num1 = 100
    console.log(num1)//100
    console.log(num2)//50*/

    /*//2.
    var num = 10
    function f1(num){
        num = 50//這的num是區域性變數。因為和形參一樣。
        num2 = 100//隱式全域性變數
        console.log(num)///50
    }
    f1(num)
    console.log(num)//10
    console.log(num2)//100*/

    /*//3.
    var num1 = 10
    var num2 = 20
    function f1(num,num1){
        num = 30//這的num是區域性變數。因為和形參一樣。
        num1 = 30//這的num1是區域性變數。因為和形參一樣。
        num2 = 30//隱式全域性變數
        console.log(num)//30
        console.log(num1)//30
        console.log(num2)//30
    }
    f1(num1,num2)//函式體內就是 10=30 20=30 num2=30
    console.log(num)//報錯
    console.log(num1)//10
    console.log(num2)//30*/

    //4.
    function Person(name,age,weight){
        this.name = name
        this.age = age
        this.weight = weight
    }
    function f1(person){
        person.name = '張三'
        person = new Person('李四',18,250)//這句話是person物件的地址不是p的,所以p.name還是張三,但是person.name是李四
    }
    var p = new Person('王五',18,500)
    console.log(p.name)//王五
    f1(p)//此時p.name = '張三'
    console.log(p.name)//張三
</script>
<body>
    
</body>
</html>