函數(shù)

javascript中的函數(shù)指的是一個特定代碼塊壳影,可能包含多條語句,以通過名字來供其它語句調(diào)用以執(zhí)行函數(shù)包含的代碼語句卿城。
1.聲明函數(shù)
(1)構(gòu)造函數(shù)(通過new創(chuàng)建一個函數(shù)對象)

   var Person=new Function(console.log("jam"));
   Person();//jam添瓷;

注:此方法不推薦使用每庆。
(2)聲明函數(shù)(通過function關(guān)鍵字聲明函數(shù))

  function Person(name) {
   console.log(name);
  }
  Person('jam');//jam

(3)函數(shù)表達(dá)式:

  var Person=function() {
    console.log('jam')
  };
 Person();//jam

無論通過何種方式創(chuàng)建函數(shù),js中的每個函數(shù)都是一個名為Function的全局對象的實例鹅经,因此js中的每個函數(shù)都可以被視為對象寂呛。
2.函數(shù)中的arguments.
arguments是一個對象。arguments對象是所有函數(shù)的一個局部屬性瘾晃,本質(zhì)上是一個類似于數(shù)組的對象贷痪,里面包含了所有傳遞給函數(shù)的參數(shù)。

 function Person() {
  for(var i=0;i<arguments.length,i++) {
    console.log(argument[i])//jam,jirengu,hunger
     }
  }
Person('jam','jirengu','hunger')
//函數(shù)中傳入進(jìn)來的參數(shù)講按照順序保存在arguments中蹦误,使用argumetns[0],即可訪問arguments對象中的第一個參數(shù)劫拢,依次類推。
 使用arguments.length即可獲得對象中的參數(shù)的數(shù)量

function getInfo(name,age,sex) {
console.log('name:',name);
console.log('age:',age);
console.log('sex:',sex);
console.log('agruments:'argumetns);
arguments[0]='valley';
console.log('name',name)
}
 getInfo('hunger',28,'男') //執(zhí)行結(jié)果如下:
 //  name:hunger
 age:28
 sex:男
 arguments:['hunger','28','男'];//按順序保存著函數(shù)傳入進(jìn)來的參數(shù)强胰。
 name:valley//arguments[0]=valley,使第一個參數(shù)的值變?yōu)榱薬rguments舱沧。
getInfo('男')  //執(zhí)行結(jié)果如下:
// name:男
age:undefined;
sex:undefined;
arguments:['男'];
name:valley;
//所有的參數(shù)都是按順序傳入進(jìn)來偶洋,沒有傳值得就是undefined;

3.函數(shù)的重載

  • 簡單的說函數(shù)重載就是熟吏,當(dāng)兩個函數(shù)名相同時,后一個函數(shù)聲明會把前一個函數(shù)聲明給覆蓋玄窝。
    function add() {
    console.log("被后面的函數(shù)覆蓋")
    }
    function add() {
    console.log("覆蓋前面的函數(shù)")
    }
    add()// 覆蓋前面的函數(shù)牵寺。(執(zhí)行第二個函數(shù))
    4.聲明提升
    和變量的聲明前置一樣,函數(shù)聲明也會前置恩脂。即使函數(shù)執(zhí)行寫在前面也可以執(zhí)行帽氓,因為函數(shù)聲明即使在后面,也會前置俩块。

    fn(); // "1"
    
     function fn(){
      console.log('1');
     }
      //這是一個簡單的例子杏节。次代碼函數(shù)聲明前置后為
    
     function fn() {
        console.log('1')
        }
      fn();//1
    

下面看一個復(fù)雜一點(diǎn)的例子:
sayName('world');
sayAge(10);
function sayName(name) {
console.log('hello',name);
}
var sayAge=function(age) {
console.log(age;)
};
根據(jù)函數(shù)聲明前置,此代碼等價于以下代碼:
function sayName(name) {
console.log('hello',name);
}
var sayAge;
sayName('world');//hello world
sayAge(10);//報錯典阵,sayAge is not a function
sayAge=function(age){
console.log(age)
}
當(dāng)使用函數(shù)表達(dá)式的方法聲明函數(shù)時,函數(shù)前置的規(guī)則和變量前置的規(guī)則一樣

下面看一個函數(shù)聲明前置和變量聲明前置混在一起的例子
   function fn(fn2) {
    console.log(fn2);
    var fn2=3;
    console.log(fn2)
    console.log(fn);
    function fn2() {
      console.log('fnnn2')
    }
  }
  fn(10);
根據(jù)函數(shù)聲明前置和變量聲明前置镊逝,上面的代碼下面的代碼等價
        function fn(fn2) {
            var fn2;
            function fn2() {
              console.log('fnnn2');
      }
          console.log(fn2);//function fn2() {console.log('fnnn2')},因為此時fn2是一個函數(shù)壮啊。
          fn2=3;
          console.log(fn2);//3,此時fn2=3,
          console.log(fn)//輸出fn這個函數(shù)
    }
    fn(10);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撑蒜,一起剝皮案震驚了整個濱河市歹啼,隨后出現(xiàn)的幾起案子玄渗,更是在濱河造成了極大的恐慌,老刑警劉巖狸眼,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件藤树,死亡現(xiàn)場離奇詭異,居然都是意外死亡拓萌,警方通過查閱死者的電腦和手機(jī)岁钓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來微王,“玉大人屡限,你說我怎么就攤上這事】惶龋” “怎么了钧大?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長罩旋。 經(jīng)常有香客問我啊央,道長,這世上最難降的妖魔是什么涨醋? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任瓜饥,我火速辦了婚禮,結(jié)果婚禮上东帅,老公的妹妹穿的比我還像新娘压固。我一直安慰自己,他們只是感情好靠闭,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布帐我。 她就那樣靜靜地躺著,像睡著了一般愧膀。 火紅的嫁衣襯著肌膚如雪拦键。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天檩淋,我揣著相機(jī)與錄音芬为,去河邊找鬼。 笑死蟀悦,一個胖子當(dāng)著我的面吹牛媚朦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播日戈,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼询张,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浙炼?” 一聲冷哼從身側(cè)響起份氧,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤唯袄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜗帜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恋拷,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年厅缺,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔬顾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡店归,死狀恐怖阎抒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情消痛,我是刑警寧澤且叁,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站秩伞,受9級特大地震影響逞带,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纱新,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一展氓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脸爱,春花似錦遇汞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至族檬,卻和暖如春歪赢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背单料。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工埋凯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扫尖。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓白对,卻偏偏與公主長得像,于是被迫代替她去往敵國和親换怖。 傳聞我的和親對象是個殘疾皇子甩恼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

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

  • 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 (*)解析器會率先讀取函數(shù)聲明,并使其在執(zhí)行任何代碼之前可以訪問;函數(shù)表達(dá)式則必須...
    coolheadedY閱讀 388評論 0 1
  • 1.函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 (*) 區(qū)別: 函數(shù)聲明后面的分號可加可不加媳拴,不加也不影響接下來語句的執(zhí)行,但...
    Sheldon_Yee閱讀 401評論 0 1
  • 問答題 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 (*)答://函數(shù)聲明function hello(){ conso...
    饑人谷_桶飯閱讀 245評論 0 0
  • 1. 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別兆览? 在變量提升或聲明提前過程中屈溉,函數(shù)聲明是將整個被定義的函數(shù)提前,即該函數(shù)可以...
    王康_Wang閱讀 388評論 0 0
  • 有的人撩妹兒手段之高明线梗。。怠益。 最近一段時間特別多的陌生人請求添加好友仪搔,有的條件查找,有的來源于空間好友蜻牢,當(dāng)然一般極...
    夜空星星淚閱讀 758評論 11 2