js函數(shù)作為另一個函數(shù)的參數(shù)及typeof()函數(shù)

函數(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)方法待更新……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容