您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“javascript函數(shù)有哪些寫法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“javascript函數(shù)有哪些寫法”吧!
javascript函數(shù)的寫法有:1、常規(guī)寫法,“function 函數(shù)名(){js代碼}函數(shù)名()”;2、$(function(){})寫法,“$(對(duì)象).ready(function() {js代碼});”。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
Javascript和其他編程語言相比比較隨意,所以Javascript代碼中充滿各種奇葩的寫法,有時(shí)霧里看花,本文講一下JavaScript函數(shù)的寫法。
在Javascript中只有對(duì)象。 變量是對(duì)象,函數(shù)也是對(duì)象。 只要你知道你的對(duì)象是什么,按照它的方式去使用就可以了。 Javascript是弱類型,對(duì)象,實(shí)例,函數(shù),方法通用的。不需要區(qū)別那么清楚。
// 函數(shù)的定義 function foo() { alert('常規(guī)寫法'); } // 函數(shù)的調(diào)用 foo()
這種寫法是大家最熟悉,最易于理解的寫法和調(diào)用方法,接著往下看
// 函數(shù)的定義 var foo = function(){ alert('匿名函數(shù)定義'); } // 函數(shù)的調(diào)用 foo()
這里把功能定義弄成了匿名,省去了命名的痛苦,同時(shí)賦給了一個(gè)變量,變量就成了功能的代名詞,接著看
// 定義 var test = { fun1: function(){ }, fun2: function(){ } } // 調(diào)用 test.fun1(); test.fun2();
在Javascript中變量功能很強(qiáng)大,可以代表很多東西。
// 給對(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ì)象屬性
通過prototype關(guān)鍵字添加方法。
前面講的函數(shù)定義和調(diào)用時(shí)分開的,這里馬上講的定義和執(zhí)行是一起進(jìn)行的。
( function(){…} )() 和( function(){…} () ) 是 兩種javascript立即執(zhí)行函數(shù)的常見寫法,最初我以為是一個(gè)括號(hào)包裹匿名函數(shù),再在后面加個(gè)括號(hào)調(diào)用函數(shù),最后達(dá)到函數(shù)定義后立即執(zhí)行的目的,后來發(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á)式,這是最常見的函數(shù)表達(dá)式語法形式。
匿名函數(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)算符,常見的是!與void !function(){alert('hello');}(); void function(){alert(2);}();
$ (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í)行。
到此,相信大家對(duì)“javascript函數(shù)有哪些寫法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。