Javascript函數(shù)

函數(shù)的定義和調(diào)用

函數(shù)的定義:function 函數(shù)名(參數(shù),參數(shù)){ 陵吸。忿晕。。} ? 函數(shù)體內(nèi)的語(yǔ)句一旦執(zhí)行到return ?就執(zhí)行完畢 ? 返回結(jié)果 ?沒(méi)有return ?函數(shù)執(zhí)行完畢也會(huì)返回結(jié)果 ?結(jié)果為undefined ?

函數(shù)就是一個(gè)對(duì)象 ?函數(shù)名可以視為指向該函數(shù)的變量 ? var 變量 = function(參數(shù)){吞歼。圈膏。。} ? 這是一個(gè)匿名函數(shù) ?他沒(méi)有函數(shù)名 ?但是這個(gè)函數(shù)賦值給了變量 ?通過(guò)變量就可以調(diào)用函數(shù)

調(diào)用函數(shù)

函數(shù)名(參數(shù))調(diào)用函數(shù) ?參數(shù)按順序傳入 ?函數(shù)可以任意個(gè)篙骡,就算函數(shù)體內(nèi)用不到這個(gè)參數(shù) ?比定義的少也可以 ?返回NaN(此時(shí)函數(shù)的參數(shù)將是undefined ?稽坤,所以結(jié)果為NaN)

要避免收到undefined 可以對(duì)參數(shù)進(jìn)行檢查

if(typeof 參數(shù) 丈甸!==“number”){ ? throw ‘not ?a ?number ?’}

arguments ?關(guān)鍵字 ?只在函數(shù)內(nèi)部起作用 ?并且永遠(yuǎn)指向當(dāng)前函數(shù)的調(diào)用者傳入的所有參數(shù) ?

arguments類似array ?但不是array

foo(a[,b],c);

接收2.3個(gè)參數(shù) ?b可選參數(shù) ?如果只有2個(gè)參數(shù) ?b默認(rèn)為null

function foo(a,b,c){if(arguments.length ===2){ ? c =b; ? ?b = null;}}

rest參數(shù)

function foo(a,b尿褪,c睦擂,...rest){console.log(rest);} ?foo(1,2,3,4,5); ? rest只能寫(xiě)在最后 ? ?先綁定原有參數(shù) 多余的參數(shù)以數(shù)組的形式傳給變量rest ? 如果傳入?yún)?shù)沒(méi)滿定義參數(shù) ? 那么rest接收一個(gè)空數(shù)組

變量的作用域

函數(shù)內(nèi)申明的變量 ?作用于整個(gè)函數(shù)體 ?外部不可引用

不同函數(shù)各自申明同一個(gè)變量 ?只在各自的函數(shù)體內(nèi)起作用 ?不同函數(shù)體內(nèi)的同名變量互相獨(dú)立,互不影響 ? ?內(nèi)部函數(shù)可以訪問(wèn)外部函數(shù)定義的變量 ?反過(guò)來(lái)這不行 ? ?內(nèi)外函數(shù)的變量名相同 從內(nèi)向外 ?外部的變量將被屏蔽 ?

變量的提升 ? ? 在函數(shù)內(nèi)部首先申明所有的變量?

全局作用域

不在任何函數(shù)內(nèi)定義的變量 ?實(shí)際上就是被綁定到window的一個(gè)屬性 ? ?eg

var a = 'xiaoqi';

alert(a); ? alert(window.a);

函數(shù)實(shí)際上也是一個(gè)全局變量 ?并綁定到window對(duì)象 ? alert()函數(shù)也是window的一個(gè)變量

名字空間

避免命名沖突 ?定義一個(gè)唯一的全局變量 ?把所有的變量和函數(shù)綁定在一個(gè)全局變量中

局部作用域

在for循環(huán)中是無(wú)法定義具有局部作用域的變量

常量

用關(guān)鍵字const來(lái)定義常量 ?const和let都具有塊級(jí)作用域 ? ?eg: ? const pi= 3.14杖玲;

方法

在一個(gè)對(duì)象中綁定函數(shù) ? ?這個(gè)函數(shù)就叫方法但是它在內(nèi)部使用了this關(guān)鍵字

this是一個(gè)變量 ? 他始終指向當(dāng)前對(duì)象 ?this.屬性就可以拿到你要的屬性?

apply 把參數(shù)打包成Array再傳入

call 把參數(shù)按順序傳入

裝飾器 ??

利用apply()顿仇,可以動(dòng)態(tài)改變函數(shù)的行為

高階函數(shù)

一個(gè)函數(shù)可以作為另一個(gè)函數(shù)的參數(shù)?

map

調(diào)用map()方法,傳入我們自己的函數(shù) ?得到一個(gè)新的數(shù)組作為結(jié)果 ??

利用map()可以將所有數(shù)字轉(zhuǎn)化為字符串?

eg:var arr = [1,2,3,4,5,6,7]; ? ? arr.map(String);

reduce()這個(gè)函數(shù)必須接受兩個(gè)參數(shù) ?把結(jié)果繼續(xù)和下一個(gè)元素做累計(jì) ?作用在數(shù)組上

var arr = [1,3,5,7,9]; ? arr.reduce(function(x, y){ ? ? returnx + y; ? });

上一個(gè)的結(jié)果和序列下一個(gè)元素做累計(jì)計(jì)算

var ?arr = [1,3,5,7,9]; ? arr.reduce(function(x, y){ ?returnx *10+ y; ? });//得到結(jié)果13579摆马;

return arr.map(function(s){

return s.toLowerCase();

}).map(function(s){

return s[0].toUpperCase()+s.slice(1);

});

//將名字首字母大寫(xiě) ?后面小寫(xiě) ? 規(guī)范名字

r = arr.map(function(s){

return parseInt(s);

});

//將字符串變成整數(shù)夺欲。

filter

用于把數(shù)組的某些元素過(guò)濾掉 ?然后返回剩下的元素 ?和map()類似 ? filter()把傳入的函數(shù)依次作用于每個(gè)元素 ?根據(jù)返回值決定去留該元素

var arr = [1,2,4,5,6,9,10,15];

var r = arr.filter(function(x){

return x%2!==0;});

console.log(r);

回調(diào)函數(shù)

filter()接收的回調(diào)函數(shù),其實(shí)可以有多個(gè)參數(shù) 今膊,回調(diào)函數(shù)還可以接收另外兩個(gè)參數(shù)些阅,表示元素的位置和數(shù)組本身

var arr = [1,2,3,4,5,6,7,8,9];

var r = arr.filter(function(element,key,self){

var isPrimes = true;

if (element<2) {

isPrimes = false;

}else{

for (var i in self) {

if (self[i] !=1&&element!=self[i]&&element %self[i] === 0) {

isPrimes = false;

break;

}

}

}

return isPrimes;

});

console.log(r);

//[2,3,5,7];

sort

根據(jù)ASCII碼排序

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市斑唬,隨后出現(xiàn)的幾起案子市埋,更是在濱河造成了極大的恐慌,老刑警劉巖恕刘,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缤谎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡褐着,警方通過(guò)查閱死者的電腦和手機(jī)坷澡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)含蓉,“玉大人频敛,你說(shuō)我怎么就攤上這事∠诳郏” “怎么了斟赚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)差油。 經(jīng)常有香客問(wèn)我拗军,道長(zhǎng),這世上最難降的妖魔是什么蓄喇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任发侵,我火速辦了婚禮,結(jié)果婚禮上妆偏,老公的妹妹穿的比我還像新娘刃鳄。我一直安慰自己,他們只是感情好楼眷,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布铲汪。 她就那樣靜靜地躺著,像睡著了一般罐柳。 火紅的嫁衣襯著肌膚如雪掌腰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天张吉,我揣著相機(jī)與錄音齿梁,去河邊找鬼。 笑死肮蛹,一個(gè)胖子當(dāng)著我的面吹牛勺择,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伦忠,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼省核,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了昆码?” 一聲冷哼從身側(cè)響起气忠,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赋咽,沒(méi)想到半個(gè)月后旧噪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脓匿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年淘钟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陪毡。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡米母,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出毡琉,到底是詐尸還是另有隱情爱咬,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布绊起,位于F島的核電站精拟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏虱歪。R本人自食惡果不足惜蜂绎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笋鄙。 院中可真熱鬧师枣,春花似錦、人聲如沸萧落。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至陨倡,卻和暖如春敛滋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背兴革。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工绎晃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人杂曲。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓庶艾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親擎勘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咱揍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 函數(shù)就是最基本的一種代碼抽象的方式。 定義函數(shù)function abs(x) {if (x >=0){return...
    _我和你一樣閱讀 439評(píng)論 0 0
  • 函數(shù)函數(shù)定義與調(diào)用變量作用域全局變量方法高階函數(shù)閉包箭頭函數(shù)$generator$ 函數(shù) 函數(shù)定義與調(diào)用 定義函數(shù)...
    染微言閱讀 577評(píng)論 0 5
  • 本文是大神廖雪峰的JavaScript教程學(xué)習(xí)筆記棚饵。并不是教程述召,如有需要,請(qǐng)前往廖雪峰大神大博客. 一蟹地、函數(shù)定義和...
    0o凍僵的企鵝o0閱讀 484評(píng)論 1 3
  • 函數(shù) 1.JavaScript允許傳入任意個(gè)參數(shù)而不影響調(diào)用积暖,因此傳入的參數(shù)比定義的參數(shù)多也沒(méi)有問(wèn)題,雖然函數(shù)內(nèi)部...
    wyude閱讀 162評(píng)論 0 1
  • layout: posttitle: JavaScript函數(shù)tags: [JavaScript, 函數(shù)]auth...
    比軒閱讀 506評(píng)論 2 2