本文是金旭亮老師網易雲課堂的課程筆記,記錄下來,以供備忘
函數的參數
對於參數值,JavaScript不會進行類型檢查,任何類型的值都可以被傳遞給參數。
對於函數參數,如果過少,沒得到值的參數值為undefined,如果過多,多的會被忽略掉。
//調用函數時傳入的實際參數
function add(num1, num2) {
return num1 + num2;
}
//一切正常的調用方式
console.info(add(1, 2)); //3
//不檢查參數的類型,字串和數字可以混用
console.info(add("1", 2)); //12
//多余參數被忽略
console.info(add(1, 2, 3)); //3
//少的參數被視為undefined
//1+undefined=NaN
console.info(add(1)); //NaN
檢測參數是否缺失
判斷是否為 undefined
//檢測參數是否缺失
function sayHello(name, message) {
if (typeof message === 'undefined') {
message = '你好!';
}
console.info(name + "," + message);
}
sayHello("賈君鵬", "你媽喊你吃飯");
sayHello("賈君鵬"); //賈君鵬,你好!
保存參數的arguments對象
利用arguments對象,寫出支持任意個參數的函數。arguments像是一個數組,但實際上不是數組,所以很多數組方法是不能用的。
//保存參數的arguments對象
function sumNumbers() {
var result = 0;
for (var i = 0; i < arguments.length; i++) {
result += arguments[i];
}
return result;
}
console.info(sumNumbers(1, 2)); //3
console.info(sumNumbers(1, 2, 3)); //6
函數對象的length屬性
arguments.length 函數接收的實參個數
函數名.length 函數定義的形參
//函數對象的length屬性
function sayName(name){
console.info(name);
}
function sum(num1, num2){
return num1 + num2;
}
function sayHi(){
console.info("hi");
}
console.info(sayName.length); //1
console.info(sum.length); //2
console.info(sayHi.length); //0
作為參數的函數對象
函數是一個對象,可以作為另一個函數的參數
//作為參數的函數對象
function callSomeFunction(func, argu) {
return func(argu);
}
function getGreeting(name) {
return "Hello, " + name;
}
var result = callSomeFunction(getGreeting, "jxl");
console.info(result); //Hello,jxl
使用命名/匿名函數作為函數參數
var callTwice = function (otherFunc) {
otherFunc();
otherFunc();
};
callTwice(function () {
console.info("this is a function");
});
函數作為參數實例:
<script>
var button = document.getElementById('btnClick');
var result = document.getElementById('result');
var clickCount = 0;
button.addEventListener('click', function () {
clickCount++;
result.setAttribute('value', clickCount+': Hello,world!');
})
</script>
以上所述就是本文的全部內容了,希望大家能夠喜歡。