這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)javascript中函數(shù)有哪些書寫方法,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、龍亭網(wǎng)絡(luò)推廣、微信小程序、龍亭網(wǎng)絡(luò)營(yíng)銷、龍亭企業(yè)策劃、龍亭品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供龍亭建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
1. 常規(guī)寫法:
// 函數(shù)的定義 function foo() { alert('常規(guī)寫法'); } // 函數(shù)的調(diào)用 foo()
這種寫法是大家最熟悉,最易于理解的寫法和調(diào)用方法,接著往下看
2. 匿名函數(shù)寫法
// 函數(shù)的定義 var foo = function(){ alert('匿名函數(shù)定義'); } // 函數(shù)的調(diào)用 foo()
這里把功能定義弄成了匿名,省去了命名的痛苦,同時(shí)賦給了一個(gè)變量,變量就成了功能的代名詞,接著看
3. 將方法作為一個(gè)對(duì)象
// 定義 var test = { fun1: function(){ }, fun2: function(){ } } // 調(diào)用 test.fun1(); test.fun2();
在Javascript中變量功能很強(qiáng)大,可以代表很多東西。
4. 構(gòu)造函數(shù)中給對(duì)象添加方法
// 給對(duì)象添加方法 var fun = function(){ }; // 定義函數(shù)對(duì)象 fun.prototype.test = function(){ alert('這是在在foo函數(shù)上的原始對(duì)象上添加test方法,構(gòu)造函數(shù)中用到'); } // 調(diào)用 var myfun = new fun(); // 創(chuàng)建對(duì)象 myfun.test(); // 調(diào)用對(duì)象屬性
通過(guò)prototype關(guān)鍵字添加方法。
5. 自執(zhí)行函數(shù) ( function(){…} )() 和( function(){…} () )
前面講的函數(shù)定義和調(diào)用時(shí)分開的,這里馬上講的定義和執(zhí)行是一起進(jìn)行的。
( function(){…} )() 和( function(){…} () ) 是 兩種javascript立即執(zhí)行函數(shù)的常見(jiàn)寫法,最初我以為是一個(gè)括號(hào)包裹匿名函數(shù),再在后面加個(gè)括號(hào)調(diào)用函數(shù),最后達(dá)到函數(shù)定義后立即執(zhí)行的目的,后來(lái)發(fā)現(xiàn)加括號(hào)的原因并非如此。要理解立即執(zhí)行函數(shù),需要先理解一些函數(shù)的基本概念。
函數(shù)聲明、函數(shù)表達(dá)式、匿名函數(shù)
函數(shù)聲明:function fnName () {…};使用function關(guān)鍵字聲明一個(gè)函數(shù),再指定一個(gè)函數(shù)名,叫函數(shù)聲明。
函數(shù)表達(dá)式var fnName = function () {…};使用function關(guān)鍵字聲明一個(gè)函數(shù),但未給函數(shù)命名,最后將匿名函數(shù)賦予一個(gè)變量,叫函數(shù)表達(dá)式,這是最常見(jiàn)的函數(shù)表達(dá)式語(yǔ)法形式。
匿名函數(shù):function () {}; 使用function關(guān)鍵字聲明一個(gè)函數(shù),但未給函數(shù)命名,所以叫匿名函數(shù),匿名函數(shù)屬于函數(shù)表達(dá)式,匿名函數(shù)有很多作用,賦予一個(gè)變量則創(chuàng)建函數(shù),賦予一個(gè)事件則成為事件處理程序或創(chuàng)建閉包等等。
函數(shù)聲明和函數(shù)表達(dá)式不同之處在于,
一、Javascript引擎在解析javascript代碼時(shí)會(huì)‘函數(shù)聲明提升’(Function declaration Hoisting)當(dāng)前執(zhí)行環(huán)境(作用域)上的函數(shù)聲明,而函數(shù)表達(dá)式必須等到Javascirtp引擎執(zhí)行到它所在行時(shí),才會(huì)從上而下一行一行地解析函數(shù)表達(dá)式,
二、函數(shù)表達(dá)式后面可以加括號(hào)立即調(diào)用該函數(shù),函數(shù)聲明不可以,只能以fnName()形式調(diào)用 。以下是兩者差別的兩個(gè)例子。
// 方式1: ( function(){…} () ) ( function(){alert('hello world, I am coming');}() ); // 函數(shù)有參數(shù)的情況,有時(shí)為確保執(zhí)行,前面加; // 看到別人的插件,你會(huì)發(fā)現(xiàn)人家開頭處加了一個(gè)";",這樣就算頁(yè)面js有錯(cuò)誤,加載運(yùn)行他的插件也能保證運(yùn)行,如: ;(function(e){alert(e);}('hello world')); // 方式2:( function(){…} )() (function(){alert('hello');})(); // 有時(shí)在前面加運(yùn)算符,常見(jiàn)的是!與void !function(){alert('hello');}(); void function(){alert(2);}();
6 $(function(){})寫法
$ (function(){/…/});
是 $(document).ready(function(){/…/})
的簡(jiǎn)寫形式,是在DOM加載完成后執(zhí)行的回調(diào)函數(shù),并且只會(huì)執(zhí)行一次。
$( document ).ready(function() { console.log( "ready!" ); });
與如下寫法等價(jià)
$(function() { console.log( "ready!" ); });
在一個(gè)頁(yè)面中不同的js中寫的$(function(){/…/});
函數(shù),會(huì)根據(jù)js的排列順序依次執(zhí)行。
上述就是小編為大家分享的javascript中函數(shù)有哪些書寫方法了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。