W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
JavaScript 函數(shù)對參數(shù)的值(arguments)沒有進行任何的檢查。
JavaScript 函數(shù)參數(shù)與大多數(shù)其他語言的函數(shù)參數(shù)的區(qū)別在于:它不會關(guān)注有多少個參數(shù)被傳遞,不關(guān)注傳遞的參數(shù)的數(shù)據(jù)類型。
在先前的教程中,我們已經(jīng)學習了函數(shù)的顯式參數(shù):
函數(shù)顯式參數(shù)在函數(shù)定義時列出。
函數(shù)隱藏參數(shù)(arguments)在函數(shù)調(diào)用時傳遞給函數(shù)真正的值。
JavaScript 函數(shù)定義時參數(shù)沒有指定數(shù)據(jù)類型。
JavaScript 函數(shù)對隱藏參數(shù)(arguments)沒有進行檢測。
JavaScript 函數(shù)對隱藏參數(shù)(arguments)的個數(shù)沒有進行檢測。
如果函數(shù)在調(diào)用時缺少參數(shù),參數(shù)會默認設置為: undefined
有時這是可以接受的,但是建議最好為參數(shù)設置一個默認值:
或者,更簡單的方式:
![]() | 如果y已經(jīng)定義 , y || 0返回 y, 因為 y 是 true, 否則返回 0, 因為 undefined 為 false。 |
---|
如果函數(shù)調(diào)用時設置了過多的參數(shù),參數(shù)將無法被引用,因為無法找到對應的參數(shù)名。 只能使用 arguments 對象來調(diào)用。
JavaScript 函數(shù)有個內(nèi)置的對象 arguments 對象.
argument 對象包含了函數(shù)調(diào)用的參數(shù)數(shù)組。
通過這種方式你可以很方便的找到最后一個參數(shù)的值:
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;
}
或者創(chuàng)建一個函數(shù)用來統(tǒng)計所有數(shù)值的和:
在函數(shù)中調(diào)用的參數(shù)是函數(shù)的參數(shù)。
如果函數(shù)修改參數(shù)的值,將不會修改參數(shù)的初始值(在函數(shù)外定義)。
總結(jié):JavaScript函數(shù)傳值只是將參數(shù)的值傳入函數(shù),函數(shù)會另外配置內(nèi)存保存參數(shù)值,所以并不會改變原參數(shù)的值。
實例
var x = 1;
// 通過值傳遞參數(shù)
function myFunction(x) {
x++; //修改參數(shù)x的值,將不會修改在函數(shù)外定義的變量 x
console.log(x);
}
myFunction(x); // 2
console.log(x); // 1
在JavaScript中,可以引用對象的值。
因此我們在函數(shù)內(nèi)部修改對象的屬性就會修改其初始的值。
修改對象屬性可作用于函數(shù)外部(全局變量)。
實例
var obj = {x:1};
// 通過對象傳遞參數(shù)
function myFunction(obj) {
obj.x++; //修改參數(shù)對象obj.x的值,函數(shù)外定義的obj也將會被修改
console.log(obj.x);
}
myFunction(obj); // 2
console.log(obj.x); // 2
提示:你可以在本站的JavaScript編程實戰(zhàn)中練習使用JavaScript函數(shù)參數(shù)!
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: