溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

javascript函數(shù)有哪些寫法

發(fā)布時(shí)間:2021-06-15 16:41:41 來源:億速云 閱讀:248 作者:chen 欄目:web開發(fā)

本篇內(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ū)別那么清楚。

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ì)象屬性

通過prototype關(guān)鍵字添加方法。

5. 自執(zhí)行函數(shù) ( function(){…} )() 和( function(){…} () )

前面講的函數(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);}();

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í)行。

到此,相信大家對(duì)“javascript函數(shù)有哪些寫法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(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)容。

AI