JS形參與實參問題


 

  JavaScript的參數傳遞也都是采用值傳遞的方式進行傳值。

  

(1)     通過實參調用函數的時候,傳入函數里的是實參的副本而不是實參,因此在函數里面修改參數值並不會對實參造成影響。

例如:將全局變量作為參數傳到函數內部修改之后並不影響變量自己

<script>

    function test(value) {
        //修改value的值
        value = "局部變量";
        alert("函數內部的變量值:"+value);//局部變量
    }

    var value = "全局變量";
    test(value);
    alert("函數外部的值:"+value)//全局變量


</script>

 

 

(2)函數的參數個數問題:

  使用空參數沒有任何問題,程序可以正常執行,只是JS沒有傳入實參的參數值將作為undefined處理。

  JavaScript調用函數時對傳入的實參並沒有要求,即使定義函數時聲明了多個形參,調用函數時也不要求必須傳入相匹配的實參。因此JavaScript不存在函數重載;對JavaScript來說函數名字是唯一的標識類。

 

例如:如果定義兩個名字相同的函數,不管參數個數,后面的函數會覆蓋前面定義的函數:

<script>

    function test() {
        alert("無參函數")
    }
    function test(obj) {
        alert(obj)
    }

    test();//undefined
    // 會調用test(obj)函數,只是參數傳入為undefined


</script>

 

  上面的test函數始終調用第二個test(obj)函數。

 

 

沒有傳入的參數會被當為null和undefined處理。

例如:

<script>
    function test(para1) {
        alert(para1 == null);//true
        alert(para1 == undefined);//true
    }
    test();
</script>

 

在JavaScript中,將一個變量賦值為undefined或null,老實說,幾乎沒區別。

 

 

undefined和null區別參考:http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM