天天看點

javaScript中将函數作為參數

馬上要到2020年了,元旦将至,自己2019年定下的一些學習計劃,還有一部分沒有完成,有些遺憾,2020年更要加油,共勉。

javaScript中将函數作為參數
javaScript中将函數作為參數
javaScript中将函數作為參數
javaScript中将函數作為參數
javaScript中将函數作為參數
javaScript中将函數作為參數
javaScript中将函數作為參數
javaScript中将函數作為參數
javaScript中将函數作為參數
javaScript中将函數作為參數
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>javaScript中将函數作為參數</title>
<script type="text/javascript">
/*
arguments 對象實際上是所在函數的一個内置類數組對象。
每個函數都有一個arguments屬性,表示函數的實參集合,這裡的實參是重點,就是執行函數時實際傳入的參數的集合。
*/
function fn1(){
//arguments不是數組而是一個對象,但它和數組很相似,是以通常稱為類數組對象
//以後看到類數組其實就表示arguments。arguments對象不能顯式的建立,它隻有在函數開始時才可用。
	console.log(arguments);
	//arguments對象可以檢測參數個數,模拟函數重載
	//arguments.length為函數實參個數,可以用arguments[length]顯示調用參數
	console.log('實參個數=' + arguments.length);
	console.log(arguments.callee === fn1); //結果為true
	//arguments不是數組,而是一個類數組對象
	console.log(arguments instanceof Array); //結果為false
  	console.log(Array.isArray(arguments)); //結果為false
  	console.log(arguments instanceof Object); //結果為true
	console.log(this);
	console.log('**********************');
}

fn1();
var jsonStr = {"name":"令狐沖", "age":"17", "hobby":"任盈盈"};
fn1(jsonStr);
var userNames = ['蘇荃', '雙兒', '方怡', '沐劍屏', '阿珂', '建甯公主', '曾柔'];
fn1(userNames);
fn1('江西省贛州市于都縣');
fn1(666);
//在javascript中,字元串既可以用雙引号又可以用單引号包起來
fn1("江西省贛州市于都縣", 888);
fn1('江西省贛州市于都縣', 999, 656.58);
fn1(23, '江西省贛州市于都縣', 182.67);
fn1('令狐沖', [1,2,3], {name:'韋小寶 '});

//求傳入的若幹個數字(不能用數組顯示傳入)的和
function number_sum(){
	var parameterCount = arguments.length;
	var sum = 0;
	for (var index = 0; index < parameterCount; index++) {
		sum += arguments[index];
	}
	return sum;
}

var sum_result = number_sum(66, 2, 10);
console.log('多個數的和=' + sum_result);
sum_result = number_sum(60, 2, 20);
console.log('多個數的和=' + sum_result);


function fn2(){
	console.log('我是fn2()函數');
}

//将函數作為參數
fn1(fn2);//傳函數名
//傳匿名函數
fn1(function(){
	console.log('hello');
});

console.log('###############################');
function fn3(){
	console.log('我是fn3()函數');
}

var result = fn3;
console.log(result);
//fn3()函數傳回值是undefined
result = fn3();
console.log(result);
console.log(fn3());

function fn4(){
	console.log('我是fn4()函數');
	return '江西省贛州市于都縣666';
}

//fn4()函數傳回值是江西省贛州市于都縣666
result = fn4();
console.log(result);//列印江西省贛州市于都縣666


//模仿jquery,定義一個函數,函數名叫$
function $(youFunctionOrVariable){
	console.log(arguments instanceof Object);
	console.log(typeof youFunctionOrVariable === "function");
	if(typeof youFunctionOrVariable === "function"){
		console.log("你傳的是一個函數.......");
		youFunctionOrVariable();
	}else{
		console.log("你傳的是一個普通變量.......你傳的變量是" + youFunctionOrVariable);
	}
}

//将匿名函數作為參數,即傳一個匿名函數
$(function(){
	console.log('我是一個匿名函數......');
});

//定義一個普通函數
function a(){
	console.log('我是a()函數......');
}

//将函數名作為參數
$(a);

//傳一個普通變量
$('hi');
//傳一個普通變量
$(2020);
//傳一個普通變量
$(2021.86);

function $2(youFunctionOrVariable){
	//
	console.log("*==* " + (arguments instanceof Object));
	console.log("*==* " + (typeof youFunctionOrVariable === "function"));
	//
	eval(youFunctionOrVariable);
}

function b(){
	console.log('我是b()函數......');
}

function c(p){
	console.log('我是c()函數......傳的參數是' + p);
}

console.log('------------------------------------------');
$2('b()');//$2函數中的eval()函數後執行
$2('c("江西省贛州市于都縣贛南臍橙")');//$2函數中的eval()函數後執行
$2(c("于都縣番薯幹"));//$2函數中的eval()函數先執行
$2(c('于都縣酸棗糕'));//$2函數中的eval()函數先執行
$2(c(888999));//$2函數中的eval()函數先執行
// $2('I Love China');//報錯SyntaxError: unexpected token: identifier


console.log('¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥');
function $3(youFunctionOrVariable, functionParameter) {
	console.log(functionParameter == null);
	if (functionParameter == null) {
		youFunctionOrVariable();
	} else {
		youFunctionOrVariable(functionParameter);
	}
}

function showHometown(p){
	console.log('我是showHometown()函數......傳的參數是' + p);
}

//傳函數名和參數
$3(showHometown, '江西省于都縣');
$3(showHometown, 1698);
//傳函數名
$3(showHometown);
//傳匿名函數
$3(function(){
	console.log('大家好.....我是匿名函數')
});
//傳匿名函數和參數
$3(function(){
	console.log('hi.....我是匿名函數,參數是' + arguments[arguments.length-1])
}, '一萬年太久隻争朝夕');
//傳匿名函數和參數
$3(function(p){
	console.log('hello.....在下是匿名函數,參數是' + p)
}, '馬上2020年了');

console.log('*********************************');
//js是一門弱類型的程式設計語言,該程式設計語言的文法不是那麼嚴謹,如下:形參和實參的個數可以不一緻
function test1(){
	console.log('我是test1()函數,傳了' + arguments.length + '個參數');
}

//形參和實參的個數可以不一緻
//不傳參數
test1();
//傳1個參數
test1('中國');
//傳2個參數
test1(89.56, '紅紅火火恍恍惚惚');
//傳3個參數
test1('hello', 6688, 68.56);

console.log('*********************************');

function test2(Param1, Param2, Param3, Param4, Param5){
	console.log('我是test2()函數,傳了' + arguments.length + '個參數');
}

//形參和實參的個數可以不一緻
//不傳參數
test2();
//傳1個參數
test2('I Love You');
//傳2個參數
test2('哈哈哈', 536);
//傳3個參數
test2(234, 78.93, '呵呵呵');
</script>
</head>
<body style="background-color: #CCE8CF;">
	<h3 style="color: #cd1636;">javaScript中将函數作為參數</h3>
	參考網頁https://www.cnblogs.com/huangwenjietk/p/10850307.html<br/>
	參考網頁https://blog.csdn.net/zjy_android_blog/article/details/80934042<br/>
	參考網頁https://blog.csdn.net/qq_30583891/article/details/80576361<br/>
	參考網頁https://www.cnblogs.com/luguankun/p/12041759.html<br/>
	參考網頁https://blog.csdn.net/zhaihaohao1/article/details/86493543<br/>
</body>
</html>
           

繼續閱讀