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


默認參數

ES5 中如果函數在調用時未提供隱式參數,參數會默認設置為: undefined

有時這是可以接受的,但是建議最好為參數設置一個默認值:

 

實例(ES5)

 

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

  

或者,更簡單的方式:

 

實例(ES5)

 

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

  

如果函數調用時設置了過多的參數,參數將無法被引用,因為無法找到對應的參數名。 只能使用 arguments 對象來調用。

ES6 函數可以自帶參數

ES6 支持函數帶有默認參數,就判斷 undefined 和 || 的操作:

 

實例(ES6)

 

function myFunction(x, y = 10) {
    // y is 10 if not passed or undefined
    return x + y;
}
 
myFunction(0, 2) // 輸出 2
myFunction(5); // 輸出 15, y 參數的默認值

  

arguments 對象

JavaScript 函數有個內置的對象 arguments 對象。

argument 對象包含了函數調用的參數數組。

通過這種方式你可以很方便的找到最大的一個參數的值:

英超新聞

實例

 

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 (arguments[i] > max) {
            max = arguments[i];
        }
    }
    return max;
}

  

或者創建一個函數用來統計所有數值的和:

 

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 隱式參數通過值來傳遞:函數僅僅只是獲取值。

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

隱式參數的改變在函數外是不可見的。


通過對象傳遞參數

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

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

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

修改對象屬性在函數外是可見的。

 


免責聲明!

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



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