當我們不確定有多少個參數(shù)傳遞時迫像,可以用arguments來獲取,在JS中瞳遍,arguments實際上是當前函數(shù)的一個內(nèi)置對象闻妓,所有函數(shù)都內(nèi)置了一個arguments對象,arguments對象中存儲了傳遞的所有實參
<script>
//arguments的使用
function fn() {
console.log(arguments);
}
fn(1, 2, 3);
</script>
image.png
1.具有數(shù)組的length屬性,arguments.length可以獲取到arguments的長度(也就是形參的個數(shù))
2.按照 鍵 / 值 對的方式進行存儲
3.他沒有數(shù)組的一些方法如:pop();push();等
<script>
//案例:利用函數(shù)求任意個數(shù)的形參的最大值
function getMax() {
var max = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
var re = getMax(1, 2, 3, 4, 5);
alert(re);
</script>
image.png
function reverse(arr) {
var newArr = [];
for (i = arr.length - 1; i >= 0; i--) {
newArr[newArr.length] = arr[i];
}
return newArr;
}
var arr1 = reverse([1, 2, 3]);
console.log(arr1);
image.png
<script>
//用函數(shù)對數(shù)組進行冒泡排序
function sort(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
var arr1 = sort([1, 4, 2, 9]);
console.log(arr1);
</script>
image.png
輸入一個閏年限嫌,判斷是閏年還是平年(閏年:能被4整除且不能被100整除靴庆,或者能被400整除)
<script>
//輸入一個閏年炉抒,判斷是閏年還是平年(閏年:能被4整除且不能被100整除,或者能被400整除)
function isRunYear(year) {
//如果是閏年返回true稚叹,否則返回false
var flag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = true;
}
return flag;
}
console.log(isRunYear(2000));
</script>
image.png
執(zhí)行順序:
1.先執(zhí)行到fn1函數(shù)扒袖,因為沒有調(diào)用塞茅,所以繼續(xù)往下執(zhí)行
2.執(zhí)行到fn2,還是沒有調(diào)用季率,繼續(xù)往下執(zhí)行
3.再往下執(zhí)行到調(diào)用fn1野瘦,就回到fn1函數(shù)體,執(zhí)行函數(shù)
4.執(zhí)行的結(jié)果是11飒泻,然后繼續(xù)執(zhí)行到下一步調(diào)用了fn2
5.返回fn2鞭光,執(zhí)行fn2的函數(shù)體
6.fn2的函數(shù)體執(zhí)行輸出22和字符串fn2
7.fn2執(zhí)行完畢后,回道fn1繼續(xù)執(zhí)行接下來的代碼
8.執(zhí)行fn1的最后一行代碼泞遗,輸出fn1字符串
//函數(shù)可以互相調(diào)用
function fn1() {
console.log(11);
fn2();
console.log('fn1');
}
function fn2() {
console.log(22);
console.log('fn2');
}
fn1();
image.png
分析:閏年是29天,平年是28天
就是在上面判斷閏年的例子上變一下就行
<script>
//判斷是否為閏年
function isRunYear(year) {
//如果是閏年返回true史辙,否則返回false
var flag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = true;
}
return flag;
}
//用戶輸入年份汹买,輸出當年2月份的天數(shù)
//就是調(diào)用一下上面判斷閏年函數(shù)而已
function backDay() {
var year = prompt('請你輸入年份:');
//判斷是否為閏年,就直接調(diào)用上面的判斷是否閏年的函數(shù)
//if 的這個year不是上面那個函數(shù)的形參聊倔,而是本函數(shù)的用戶輸入數(shù)字晦毙,然后這個數(shù)字變成上面閏年函數(shù)的形參
if (isRunYear(year)) {
alert(year + '年是閏年2月份有29天');
} else {
alert(year + '年份是平年2月份有28天');
}
}
backDay();
</script>
image.png
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
function fun(){
alert("函數(shù)要執(zhí)行了~~~~");
for(var i=0 ; i<5 ; i++){
if(i == 2){
//使用break可以退出當前的循環(huán),只是退出循環(huán),其他的代碼還是會執(zhí)行,比如下面的alert());
//break;
//continue用于跳過當次循環(huán)
//continue;
//使用return可以結(jié)束整個函數(shù),return后面的代碼完全不執(zhí)行,不只是循環(huán),就連后面的alert();都不執(zhí)行
//return;
}
console.log(i);
}
alert("函數(shù)執(zhí)行完了~~~~");
}
//fun();
//-----------------------------------------------------
/*
* 返回值可以是任意的數(shù)據(jù)類型
* 也可以是一個對象,也可以是一個函數(shù)
*/
//返回一個對象
function fun2(){
return {name:"沙和尚"};
}
var a = fun2();
console.log("a = "+a);
//-----------------------------------------------------------------
//返回一個函數(shù)
//可以在函數(shù)內(nèi)部再聲明函數(shù),寫多少層都可以
function fun3(){
//在函數(shù)內(nèi)部再聲明一個函數(shù)
function fun4(){
alert("我是fun4");
}
//將fun4函數(shù)對象作為返回值返回
return fun4;
}
//fun3();這里調(diào)fun3();就等于調(diào)fun4();結(jié)果就是 我是fun4
a = fun3();
//a();這也是調(diào)用fun3();,結(jié)果是 我是fun4
//console.log(a);
fun3()();//相當于獲取返回值然后再執(zhí)行,結(jié)果也是 我是fun4,前面的fun3()相當于接收到fun4()的值,后一個括號相當于再執(zhí)行一次這個值
</script>
</head>
<body>
</body>
</html>