JS對(duì)象二

函數(shù)(Function)

  • 函數(shù)也是一個(gè)對(duì)象拟逮,也具有普通對(duì)象的功能
  • 函數(shù)中可以封裝一些(功能)代碼总处,在需要的時(shí)候可以去調(diào)用函數(shù)來(lái)執(zhí)行這些代碼
  • 使用typeof檢查一個(gè)函數(shù)時(shí)會(huì)返回function

1.創(chuàng)建一個(gè)函數(shù)
a. 可以將要封裝的代碼以字符串的形式傳遞給構(gòu)造函數(shù)

  • 實(shí)際開(kāi)發(fā)中很少使用構(gòu)造函數(shù)來(lái)創(chuàng)建一個(gè)函數(shù)對(duì)象

     var  fun = new  Function("console.log('Hello 這是我的第一個(gè)函數(shù)');");
     console.log(fun);//console.log('Hello 這是我的第一個(gè)函數(shù)');
    
  • 封裝到函數(shù)中的代碼不會(huì)立即執(zhí)行

  • 函數(shù)中的代碼會(huì)在函數(shù)調(diào)用的時(shí)候執(zhí)行

  • 調(diào)用函數(shù) 語(yǔ)法,函數(shù)對(duì)象()

  • 當(dāng)調(diào)用函數(shù)時(shí),函數(shù)中封裝的代碼會(huì)按照順序執(zhí)行

    fun();//Hello 這是我的第一個(gè)函數(shù)
    fun.hello ="你好";
    console.log(fun.hello);//你好
    

b.函數(shù)聲明創(chuàng)建一個(gè)函數(shù)

     function 函數(shù)名([形參1,形參2...形參N]){
            語(yǔ)句...
     }

     function fun2(){
            console.log('Hello 這是我的第二個(gè)函數(shù)');
     }
  • 調(diào)用fun2

        fun2();//Hello 這是我的第二個(gè)函數(shù)
    

c.函數(shù)表達(dá)式創(chuàng)建一個(gè)函數(shù)

        var 函數(shù)名 = function([形參1,形參2...形參N]){
            語(yǔ)句...
        };

        var fun3 =function(){
             console.log('我是匿名函數(shù)中封裝的代碼');
        }
  • 調(diào)用fun3

          fun3();//我是匿名函數(shù)中封裝的代碼
    

2.函數(shù)的參數(shù)

  • 形參和實(shí)參
    - 形參:形式參數(shù)
    - 定義函數(shù)時(shí)修肠,可以在()中定義一個(gè)或多個(gè)形參,形參之間使用,隔開(kāi)定義形參就相當(dāng)于在函數(shù)內(nèi)聲明了對(duì)應(yīng)的變量但是并不賦值户盯,形參會(huì)在調(diào)用時(shí)才賦值嵌施。

  • 實(shí)參:實(shí)際參數(shù)
    - 調(diào)用函數(shù)時(shí),可以在()傳遞實(shí)參莽鸭,傳遞的實(shí)參會(huì)賦值給對(duì)應(yīng)的形參,
    調(diào)用函數(shù)時(shí)JS解析器不會(huì)檢查實(shí)參的類(lèi)型和個(gè)數(shù)吗伤,可以傳遞任意數(shù)據(jù)類(lèi)型的值。注意是否可能接收到非法參數(shù)硫眨,如果有可能則需要對(duì)參數(shù)進(jìn)行類(lèi)型檢查足淆。
    如果實(shí)參的數(shù)量大于形參,多余實(shí)參將不會(huì)賦值礁阁,
    如果實(shí)參的數(shù)量小于形參巧号,則沒(méi)有對(duì)應(yīng)實(shí)參的形參將會(huì)賦值undefined

              function sum(a,b){
                 console.log(a+b);
              }
              sum(1,2);//3
              sum(123,"hello");//123hello
              sum(true,false);//1
              sum(1,2,"hello");//3
              sum(123);//NaN
    

    實(shí)參可以是任意的數(shù)據(jù)類(lèi)型,也可以是一個(gè)對(duì)象
    當(dāng)我們的參數(shù)過(guò)多時(shí)姥闭,可以將參數(shù)封裝到一個(gè)對(duì)象中丹鸿,然后通過(guò)對(duì)象傳遞

          function mianji(r){
              
              return 3.14*r*r;
              
          }
          
          result = mianji(5);
          
          console.log("result = "+result);
          
          
          /*
           * 創(chuàng)建一個(gè)函數(shù),可以在控制臺(tái)中輸出一個(gè)人的信息
           *  可以輸出人的 name age gender address
           * 
           * 實(shí)參可以是任意的數(shù)據(jù)類(lèi)型棚品,也可以是一個(gè)對(duì)象
           *  當(dāng)我們的參數(shù)過(guò)多時(shí)靠欢,可以將參數(shù)封裝到一個(gè)對(duì)象中廊敌,然后通過(guò)對(duì)象傳遞
           */
          function sayHello(o){
              
              //console.log("o = "+o);
              console.log("我是"+o.name+",今年我"+o.age+"歲了,"+"我是一個(gè)"+o.gender+"人"+",我住在"+o.address);
          }
          
          //sayHello("豬八戒",28,"高老莊","男");
          //創(chuàng)建一個(gè)對(duì)象
          var obj = {
              name:"孫悟空",
              age:18,
              address:"花果山",
              gender:"男"
              
          };
          
          sayHello(obj);
    

    實(shí)參可以是一個(gè)對(duì)象,也可以是一個(gè)函數(shù)

         function fun(a){
            console.log("a = "+a);
            //a(obj);
        }
        
        //fun(sayHello);
        
        //fun(function(){alert("hello")});
        
        fun(mianji(10));
        
        /*
         * mianji()
         *  - 調(diào)用函數(shù)
         *  - 相當(dāng)于使用的函數(shù)的返回值
         * 
         * mianji
         *  - 函數(shù)對(duì)象
         *  - 相當(dāng)于直接使用函數(shù)對(duì)象
         */

3.返回值

可以使用 return 來(lái)設(shè)置函數(shù)的返回值

語(yǔ)法:return 值

return后的值將會(huì)會(huì)作為函數(shù)的執(zhí)行結(jié)果返回门怪,
可以定義一個(gè)變量骡澈,來(lái)接收該結(jié)果
在函數(shù)中return后的語(yǔ)句都不會(huì)執(zhí)行

如果return語(yǔ)句后不跟任何值就相當(dāng)于返回一個(gè)undefined,
如果函數(shù)中不寫(xiě)return掷空,則也會(huì)返回undefined

return后可以跟任意類(lèi)型的值

             /* 創(chuàng)建一個(gè)函數(shù)肋殴,用來(lái)計(jì)算三個(gè)數(shù)的和*/
        function sum(a , b , c){
            //alert(a + b +c);
            
            var d = a + b + c;
            
            return d;
            
            //return undefined;
            
        }
        
        //調(diào)用函數(shù)
        //變量result的值就是函數(shù)的執(zhí)行結(jié)果
        //函數(shù)返回什么result的值就是什么
        var result = sum(4,7,8);
        
        //var result = alert("hello");
        
        console.log("result = "+result);


      function fun(){
            alert("函數(shù)要執(zhí)行了~~~~");
            
            for(var i=0 ; i<5 ; i++){
                
                
                if(i == 2){

使用break可以退出當(dāng)前的循環(huán)
//break;
continue用于跳過(guò)當(dāng)次循環(huán)
//continue;

使用return可以結(jié)束整個(gè)函數(shù)
//return;

       }
                
                console.log(i);
            }
            
            alert("函數(shù)執(zhí)行完了~~~~");
        }

4.立即執(zhí)行函數(shù)

            函數(shù)定義完,立即被調(diào)用坦弟,這種函數(shù)叫做立即執(zhí)行函數(shù)
            立即執(zhí)行函數(shù)往往只會(huì)執(zhí)行一次
         
        (function(){
            alert("我是一個(gè)匿名函數(shù)~~~");
        })();
        
        (function(a,b){
            console.log("a = "+a);
            console.log("b = "+b);
        })(123,456);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末护锤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子减拭,更是在濱河造成了極大的恐慌蔽豺,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拧粪,死亡現(xiàn)場(chǎng)離奇詭異修陡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)可霎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)魄鸦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人癣朗,你說(shuō)我怎么就攤上這事拾因。” “怎么了旷余?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵绢记,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我正卧,道長(zhǎng)蠢熄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任炉旷,我火速辦了婚禮签孔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窘行。我一直安慰自己饥追,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布罐盔。 她就那樣靜靜地躺著但绕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翘骂。 梳的紋絲不亂的頭發(fā)上壁熄,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天帚豪,我揣著相機(jī)與錄音碳竟,去河邊找鬼草丧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛莹桅,可吹牛的內(nèi)容都是我干的昌执。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼诈泼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼懂拾!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起铐达,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤岖赋,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后瓮孙,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體唐断,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年杭抠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脸甘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡偏灿,死狀恐怖丹诀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情翁垂,我是刑警寧澤铆遭,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站沿猜,受9級(jí)特大地震影響枚荣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邢疙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一棍弄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疟游,春花似錦呼畸、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至另绩,卻和暖如春儒陨,著一層夾襖步出監(jiān)牢的瞬間花嘶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工蹦漠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留椭员,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓笛园,卻偏偏與公主長(zhǎng)得像隘击,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子研铆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348