PineApple_Ninja.js
PineApple_Ninja.js
1.本章內(nèi)容
2.理解函數(shù)的重要性
3.定義函數(shù)的方式
4.參數(shù)賦值
JavaScript中最關(guān)鍵的函數(shù)是:第一類對象(first-class objects)
函數(shù)與對象共同存在,函數(shù)也可以被視為其他任意類型的JS對象。
函數(shù)和普通數(shù)據(jù)類型一樣,能被變量引用,能以字面形式聲明。
甚至還可以寫箭頭(arrow)函數(shù),它能幫你編寫更優(yōu)美的代碼。
先讓我們來學(xué)習(xí)一下他的優(yōu)點(diǎn)吧!
首先要帶著幾個(gè)問題來學(xué)習(xí)
1.回調(diào)函數(shù)在哪種清下會同步調(diào)用,或者異步調(diào)用呢?
2.箭頭函數(shù)和函數(shù)表達(dá)式的區(qū)別是什么?
3.你為什么需要在函數(shù)中使用默認(rèn)參數(shù)?
**
函數(shù)的不同點(diǎn)到底是什么?
**
函數(shù)以及函數(shù)式概念之所以重要,原因在于函數(shù)是程序執(zhí)行過程中的主要模塊單元。
除了全局javascript代碼是在頁面構(gòu)建的階段執(zhí)行的,我們編寫的所有的腳本代碼都將在一個(gè)函數(shù)內(nèi)執(zhí)行。
由于我們的大多數(shù)代碼會作為函數(shù)調(diào)用來執(zhí)行,因此我們在編寫代碼時(shí),通過用強(qiáng)大的構(gòu)造器能賦予代碼很大的靈活性和控制力。接下來看幾張常用功能
下面展示一些 內(nèi)聯(lián)代碼片。
JS不同于很多其他編程語言,在JS中,我們幾乎能夠用函數(shù)來實(shí)現(xiàn)同樣的事。
**
函數(shù)是第一類對象
**
JS中函數(shù)擁有對象的所有能力,也因此函數(shù)可被稱作為任意其他類型對象來對待。當(dāng)我們說函數(shù)是第一類對象的時(shí)候,就是說函數(shù)也能實(shí)現(xiàn)以下功能。
對象能做的任何一件事,函數(shù)也都能做。函數(shù)是對象,唯一的特殊之處在于它是可以調(diào)用的(invokable),既然函數(shù)會被調(diào)用以便執(zhí)行某項(xiàng)動作。
第一類對象的特點(diǎn)之一是,它能作為參數(shù)傳入函數(shù)。對于函數(shù)而言,這項(xiàng)特性表明:如果我們將某個(gè)函數(shù)作為參數(shù)傳入另一個(gè)函數(shù),傳入函數(shù)會在應(yīng)用程序執(zhí)行的未來某個(gè)時(shí)間點(diǎn)才執(zhí)行。大家所知道的更一般的概念是回調(diào)函數(shù)(callback function )接下來深入學(xué)習(xí)重要概念
**
回調(diào)函數(shù)
**
當(dāng)我們建立了一個(gè)將在隨后調(diào)用的函數(shù)時(shí),無論是在事件處理階段通過瀏覽器還是通過其他代碼,我們都是在建立一個(gè)回調(diào)(callback).這個(gè)屬于源自于這樣一個(gè)事實(shí),既在執(zhí)行過程中,我們建立的函數(shù)會被其他函數(shù)在稍后的某個(gè)合適事件點(diǎn)“再回來調(diào)用”
有效運(yùn)用JS的關(guān)鍵在于回調(diào)函數(shù)
不論是 單擊一次按鈕 ,從服務(wù)端接受數(shù)據(jù),還是UI動畫一部分
此段章將講述實(shí)際使用回調(diào)函數(shù)的典型例子。這部分會有些復(fù)雜,所以在深入前要先了解它的概念。我們務(wù)必要理解透徹,才能像忍者一樣快速手里劍,精通各種暗殺武器
那么回調(diào)函數(shù),就是我們的手里劍!也是忍者的入門練習(xí)武器之一
這個(gè)函數(shù)可能看起來沒什么用,但他反應(yīng)了函數(shù)的一種能力,即將函數(shù)作為另一個(gè)函數(shù)的參數(shù),隨后通過參數(shù)來調(diào)用該函數(shù).
var text="手里劍"; report("風(fēng)遁——巨魔手里劍!"); function useless(ninjaCallback){report("水遁——水分身手里劍!");return ninjaCallback(); //函數(shù)定義,參數(shù)為一個(gè)回調(diào)函數(shù),其函數(shù)體內(nèi)會立即調(diào)用該回調(diào)函數(shù) } function getText(){report("雷遁——千鳥手里劍!");return text; //簡單的函數(shù)定義,僅返回一個(gè)全局變量 }report("通靈術(shù)");assert(useless(getText)===text),"反向通靈術(shù)"+text)' //把getText作為回調(diào)函數(shù)傳入上面的useless函數(shù)report("倍攻倍化術(shù)");在這個(gè)代碼清單中,我們使用自定義函數(shù)report()來輸出執(zhí)行過程中的信息,這樣一來我們就能通過這些信息來跟蹤程序的執(zhí)行過程。
還使用了 斷言函數(shù)assert。 該函數(shù)通常使用兩個(gè)參數(shù)。第一個(gè)參數(shù)是用于斷言的表達(dá)式。
我們需要確定使用參數(shù)getText調(diào)用useless(getText)===text 判斷是否相等
若第一個(gè)參數(shù)的執(zhí)行結(jié)果為true 斷言通過;反之,斷言失敗。
第二個(gè)參數(shù)是斷言相關(guān)聯(lián)的信息。通常輸出在log上。
總結(jié)
以上是生活随笔為你收集整理的PineApple_Ninja.js的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区分大小屏幕_第一个Python程序——
- 下一篇: RSA签名算法