函數(shù)的參數(shù)可以時字符串,數(shù)組等基礎類型,還可以是函數(shù),定義函數(shù)時形參寫法類似,使用函數(shù)時傳入實參為函數(shù)即可test(test1())。
<script type="text/javascript">
// 1.無參數(shù)函數(shù)
function test1(){
alert('沒有參數(shù)');
}
// 2.有參數(shù)函數(shù)
function test2(str){
alert(str);
}
// 參數(shù)為(有參或無參)函數(shù)的函數(shù)
function test(fn){
// var a = fn;傳入的函數(shù)有返回值時
fn; // 傳入的函數(shù)無返回值時
// 在傳入?yún)?shù)的時候,自動識別是函數(shù),按函數(shù)方法執(zhí)行
}
// 調(diào)用函數(shù)
window.onload = function(){
test(test1()); // 參數(shù)為 無參函數(shù)
test(test2('我是參數(shù)')); // 參數(shù)為 含參函數(shù)
// 參數(shù)傳入函數(shù)的時候加 () ;
}
</script>
另外不可使用typeof()來區(qū)分傳入的參數(shù)是函數(shù)還是其他類型,從而執(zhí)行不同的操作方式
/**
* 基礎知識
*
* typeof() 函數(shù):
* 返回數(shù)據(jù)的數(shù)據(jù)類型
* 例如:
* typeof(1); 返回:number
* typeof('1'); 返回:string
* typeof(函數(shù)名); 返回:function [函數(shù)名后面不加括號,是Date而不是Date(),否則返回undefined]
*/
function test1(){
alert('沒有參數(shù)');
}
function hehe(str){
if (typeof(str) === 'function') {
str; // 執(zhí)行函數(shù)操作
}else{
alert(str); // 執(zhí)行字符串操作
}
}
window.onload = function(){
hehe(test1()); // 參數(shù)為 無參函數(shù)
// hehe('1111111')
}
/**
* 不可行:
* (1) typeof(str) 返回值為undefined;
* (2) typeof(str) str是函數(shù),會執(zhí)行一次
*/
實現(xiàn)方法待更新……