js函數的參數:arguments對象的使用、給參數設置默認值、通過對象/值 傳遞參數、


知識點

JavaScript 函數對參數的值(arguments)沒有進行任何的檢查。

JavaScript 函數參數與大多數其他語言的函數參數的區別在於:它不會關注有多少個參數被傳遞,不關注傳遞的參數的數據類型。

參數規則:

JavaScript 函數定義時參數沒有指定數據類型。

JavaScript 函數對隱藏參數(arguments)沒有進行檢測。

JavaScript 函數對隱藏參數(arguments)的個數沒有進行檢測。

==============================================================

arguments對象代表傳入參數,組成的一個數組:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>W3Cschool教程(w3cschool.cn)</title>
</head>
<body>

<p>查找最大的數。</p>
<p id="demo"></p>
<script>
//算法:1.如果只有一個參數,直接返回
//        2.有多個參數,則和max默認值一一比對,max小於它的,就把它賦值給max,最后返回max
x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
 var i,max=arguments[0];
 if (arguments.length<2)return max;
 for(i=0;i<arguments.length;i++){
  if(max<arguments[i])max=arguments[i];
 }
    return max;
}
document.getElementById("demo").innerHTML = x;
</script>

</body>
</html>

 給函數參數,參數如果不設置,默認值為undefined,建議給參數設置默認值,寫法一:

function myFunction(x, y) {
    if (y === undefined) {
          y = 0;
    } 
}

 給函數參數設置默認值寫法二(如果y已經定義 , y || 0返回 y, 因為 y 是 true, 否則返回 0, 因為 undefined 為 false):

function myFunction(x, y) {
    y = y || 0;
}

用【arguments對象】來計算所有傳入參數的和:

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
    var i, sum = 0;
    for (i = 0; i < arguments.length; i++) {
        sum += arguments[i];
    }
    return sum;
}

通過值傳遞參數

在函數中調用的參數是函數的參數。

如果函數修改參數的值,將不會修改參數的初始值(在函數外定義)。

總結:JavaScript函數傳值只是將參數的值傳入函數,函數會另外配置內存保存參數值,所以並不會改變原參數的值

var x = 1;
// 通過值傳遞參數
function myFunction(x) {
    x++; //修改參數x的值,將不會修改在函數外定義的變量 x
    console.log(x);
}
myFunction(x); // 2
console.log(x); // 1

通過對象傳遞參數

在JavaScript中,可以引用對象的值。

因此我們在函數內部修改對象的屬性就會修改其初始的值。

修改對象屬性可作用於函數外部(全局變量)

var obj = {x:1};
// 通過對象傳遞參數
function myFunction(obj) {
    obj.x++; //修改參數對象obj.x的值,函數外定義的obj也將會被修改
    console.log(obj.x);
}
myFunction(obj); // 2
console.log(obj.x); // 2

 


免責聲明!

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



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