1.arguments關鍵字
-
1.arguments關鍵字:獲取函式的所有實參
-
2.為什么要有arguemnts關鍵字
-
js是一門弱語言:宣告函式的時候假如只有一個形參,實際上在呼叫的時候無論我們傳入多少實參程式都不會報錯
-
為了防止這種情況:函式有一個arguments關鍵字來獲取所有的實參
-
-
3.arguments特點
-
1.只能在函式體中使用,在函式外使用會報錯
-
2.是一個特殊的陣列(偽陣列)
-
有陣列的三要素,但是沒有陣列其他的方法
-
-
3.arguemngs陣列中的元素與形參 一一對應
-
-
4.arguements好處:可以讓函式變得更加靈活
-
可以讓函式根據實參的不同而實作不同的功能
-
<script>
/**arguments關鍵字作用:獲取函式的所有實參
* 本質:當前函式的內置物件,每一個函式都有一個arguments物件,作用是存盤呼叫者傳遞過來的所有實參
* 特點:1.只能在函式體中使用,函式外部使用會報錯
* 2.是一個特殊的陣列(偽陣列)
* 3.arguments偽陣列的元素與形參一一對應
*
* 說明:1.可以用函式變得更加靈活
* 2.arguments是一個偽陣列
* * 偽陣列:只有陣列的下標、元素、長度,沒有陣列其他方法
*/
/**一:argument用法演示*/
//1.這行代碼會報錯,因為函式外部無法使用arguments
// console.log ( arguments );
//2.定義一個無參的函式,作用是列印該函式的所有引數
function fn ( num1 ) {
//(1)arguemnt保存的是所有的實參的值
// console.log ( num1 );
// console.log ( arguments );//arguments只能在函式內部使用
//(2)arguemnt與形參是一一對應的
//修改了形參,arguemnt也會修改
num1 = 100;
console.log ( arguments );//修改了形參,arguments也會修改
//反之,修改了argeumnts,形參也會變化
}
fn(10,20);//實參與形參一一對應
/** 二:arguments實際用途展示:求不確定數量的引數的和 */
function add() {
//定義變數保留資料
let sum = 0;
console.log(arguments);
//有引數:遍歷陣列統計結果
for (let i = 0; i < arguments.length; i++) {
// 防止字串和其他型別亂入,需要做安全判定
let value = arguments[i];
if (isNaN(value)) {
return false;
}
//說明value肯定是數值了,但是還要保證不是字串(影響+號運算)
sum += Number(value);
}
return sum;
}
console.log(add());
console.log(add(100));
console.log(add(10,20));
</script>
2.回呼函式
-
1.什么是回呼函式:如果一個函式的引數也是一個函式,那么這個引數函式就叫做回呼函式
-
2.為什么要有回呼函式?
-
當一個函式呼叫執行完畢之后,我想執行另一段代碼塊,也就是呼叫另一個函式
-
但是有時候可能本函式執行完畢后,根據不同的情況需要呼叫的函式也不同,那么我們可以使用形參來接收這個函式,然后再呼叫
-
此時:這個形參函式就稱之為回呼函式
-
-
<script>
//回呼函式:如果一個函式的引數也是一個函式,那么這個引數函式就叫做回呼函式
//回呼函式在什么地方會執行呢? 函式名() 的時候執行
//回呼函式難點: 本質是一個引數
//誰來傳:呼叫者傳參 (函式名)
//誰來收,呼叫:函式呼叫 (函式執行完函式體之后,呼叫保存在這個引數中的一段代碼)
function a ( ) {
console.log ( "哈哈" );
}
function b ( ) {
console.log ( "呵呵" );
}
//c函式有一個功能,可以接收呼叫者傳遞過來的一段代碼,并且在執行完自身函式體之后,會幫呼叫者執行這一段代碼
function c ( fn ) {
console.log ( "嘿嘿" );
//fn里面是呼叫者傳遞過來的一段代碼,怎么讓這段代碼執行呢?
fn();
};
//呼叫函式c,傳的是變數a中存盤的一段代碼
c(a);
c(b);
// 注意:回呼函式是將函式的代碼傳遞給形參,讓函式內部呼叫
// 注意:在傳遞實參給形參的時候,如果是要回呼函式,那么只要傳入函式名字(此時不掉用,函式內部呼叫):c(a),fn = a
// 如果在傳入實參的時候,給函式名增加了括號:c(a()),此時表示將a函式先執行,然后將a()函式的回傳值,傳遞給形參fn = a()
</script>
3.自呼叫函式
-
1.什么是自呼叫函式:函式自己呼叫自己
-
最常見的:匿名函式自呼叫
-
-
2.自呼叫函式作用
-
開辟作用域,js中只有函式才可以開辟作用域:防止全域污染
-
-
3.匿名函式自呼叫語法:
( function(){} ) ()-
將整個函式使用小括號包裹,然后在后面再加上小括號呼叫
-
<script>
/*自呼叫函式:函式自己呼叫自己
* 最常見的:匿名函式自呼叫
*/
//作用:開辟作用域,js中只有函式才可以開辟作用域
//匿名函式相當于字面量函式,由于沒有函式名,所以只能在宣告的同時呼叫
//語法: ( function(){} ) () 將整個函式使用小括號包裹,然后在后面再加上小括號呼叫
(function ( ) {
console.log ( "我是匿名函式" );
})();
//其實有名字的函式也可以自己呼叫自己,只是比較少見
(function test( ) {
console.log ( "我是有名字的函式,我也可以自呼叫" );
})();
</script>
上一章:JavaScript入門第十三章(函式)
下一章:JavaScript入門第十五章(物件)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/292516.html
標籤:其他
