JavaScript基礎(chǔ) 函數(shù)傳參

實(shí)參:實(shí)際參數(shù)(所有的數(shù)據(jù)類型都可做實(shí)參)
形參:形式參數(shù)(變量)

function fn( x , y , z ...){   //x,y ...叫形參(變量名)
    alert( 1 );               ===>相當(dāng)于在函數(shù)內(nèi)部定義了一個(gè)變量;
}
fn( 8 );//實(shí)參(實(shí)際參數(shù))



function fn( x ){
    aleret( x ); 
}
fn( 55 ); //彈出55;把55傳給x    x=55;

實(shí)參與形參一一對(duì)應(yīng)托慨;

例:

function fn( x , y ){
    alert( x + y );
}

fn( 10 , 20 );  //x = 10  y = 20     彈出:30

fn( 8 , 2 ); //x = 8 y = 2 彈出:10

fn( 2 , 3 左胞, 4 ); //4沒有對(duì)應(yīng)的形參,4不會(huì)被傳

fn( 2 ) //彈出:NaN  x = 2  y = undefined      x + y 彈出NaN

fn( '2' ) // x = '2'  y = undefined  x + y = 2undefined

例題:

var a = 10;
var b= 20;
function fn(){ //a是形參 a = b  ===> a = 20
    alert( a + b ); //這里b局部(里面)變量你雌,里面沒有定義b變量器联,只能從外部調(diào)用二汛,b=20;
}
fn( b ) ===>這里b是變量 b = 20
彈出:40

注意:局部變量可以從全局里調(diào)用;
??????全局變量不能從局部里調(diào)用拨拓;

例:

var a = 10;
function fn(){
  alert( a );
  var b = 20; 
}
alert( b );  ==> 調(diào)用不了var b = 20; 

解決方法:
      var x ; //定義一個(gè)x;
      function fn(){
            var b = 20;
            x = b ;     
      }
      alert( x ); 

全局定義一個(gè)變量肴颊,然后到局部里賦值;再出來渣磷。

var a = 10;
var b= 20;
function fn(){
    alert( a + c ); 
}
報(bào)錯(cuò)

注意:
NaN 不會(huì)報(bào)錯(cuò)是合法數(shù)據(jù)婿着,只是里面某個(gè)地方做了非法的運(yùn)算;
null 醋界、undefined 竟宋、NaN不會(huì)報(bào)錯(cuò);是合法的數(shù)據(jù)形纺;
報(bào)錯(cuò):里面有語法錯(cuò)誤丘侠;


不定參
arguments ==>存儲(chǔ)所有實(shí)參的集合是個(gè)類數(shù)組;

例:

function add(){
    alert( arguments[ 2 ] );
}
add( 2 , 5 , 8 );  彈出 8逐样;

想當(dāng)于:arguments = [ 2 , 5 , 8 ]; 類數(shù)組
所以alert( arguments[ 2 ] ) 就會(huì)彈出 8

function add( x , y , z ){
      alert( arguments[ 2 ] );
}
add( 2 , 5 , 8 );

這里有 x , y , z 形參不會(huì)影響 arguments

案例:
1蜗字、點(diǎn)擊盒子運(yùn)行有名函數(shù)且要傳參數(shù)

function fn( b ){
    alert( b );
};
如果這樣寫:
document.onclick = fn( 2 ); //fn()馬上會(huì)自執(zhí)行,沒點(diǎn)擊之前就馬上執(zhí)行官研;

解決方法:
document.onclick = function (){
    fn( 2 );
}
//點(diǎn)擊的時(shí)候才會(huì)執(zhí)行 function (){ fn( 2 ); }

2秽澳、傳一個(gè)函數(shù)

function y( x ){
    x();
}
y( function (){ alert(2); } )

這里想當(dāng)于 y()里的函數(shù)當(dāng)成一個(gè)實(shí)參傳進(jìn)去 x = function ( ){ alert(2); }
里面的 x( ) 再讓函數(shù)執(zhí)行;

function y( x ){
    x( 10 );            a
}
y( function (x){
 alert( x );            b
 } ) ===>彈出 10戏羽;

相當(dāng)于:
y( function (x){            等同于 ==> y(   function ( x ){ alert( x ); }      )
 alert( x );                              把括號(hào)里傳到 a 函數(shù)里
 } )                                      x =  function ( x ){ alert( x ); } 
                                          x( 10 ) 把10傳到給 x    就彈出 10                                  

注意: a函數(shù)與b函數(shù)的x是不一樣担神;a的全局的x;b的是局部里的x始花;


return返回值

返回return后面的數(shù)據(jù)

例:

function x( ){
    alert( 2 );
}
x()   ===>彈出 2
alert ( x() ) ===>彈出undefined;

所有函數(shù)沒有return的時(shí)候返回都是undefined

function x(){
   alert( 2 );
    return '阿里';
}
alert ( x() ); 彈出 ===> 阿里

return后面是什么返回的就是什么妄讯!

例題:

function add(){
    var length = argument.length;
          sum = 0;
      for(var i=0 ; i<length ; i++){
            sum += argument[ i ];
      }
      return sum;
}
var x = add( 3 , 4 , 6 ); ==> 13
var y = add ( 5 , 7 , 8 ); ==> 20

alert( add( x + y) ) ==>彈出 33

return阻斷 (只對(duì)函數(shù)起作用)

例:

var x = 10;
(function fn(){
    x++;
    return ; //執(zhí)行到這里就返回了;下面的代碼就不執(zhí)行酷宵;
   x -- ;
})();
alert( x );

例:

var i = 0;
function fn(){
    for( ; i<100 ; i++ ){
            if( i === 50 ){
                 return; //執(zhí)行到這里的被阻斷亥贸,下面的i++ 跟for里面的 i++ 都不執(zhí)行
            }
         i++;
    }   
}
fn();
alert( i );

函數(shù)一旦執(zhí)行到return 就立馬結(jié)束,后面的代碼不會(huì)再執(zhí)行浇垦;

例題:

document.onclick = a();
      function a(){
        alert( 1 );
}

為什么沒有點(diǎn)擊事件炕置;就是因?yàn)闆]有return的時(shí)候返回值是undefined,傳給document男韧;
解決方法:

document.onclick = a();
      function a(){
          return function (){
                      alert(1);
             }
      }
}

直接返回一個(gè)函數(shù)給document

document.onclick = a()();

      function a(){  ===>外層
          alert( 1 );
          return function (){   ===>1層
                      alert(2);
                      return function (){ ===>2層
                        alert( 3 );
                      }
                 }
            }
      }  ==>彈出 3 

a()執(zhí)行完后返回一層

              function (){   ===>1層
                      alert(2);
                      return function (){ ===>2層
                        alert( 3 );
                      }
                 }

a()()再讓一層執(zhí)行 返回的是2層

                function (){ ===>2層
                        alert( 3 );
                      }

最后彈出3朴摊;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市此虑,隨后出現(xiàn)的幾起案子甚纲,更是在濱河造成了極大的恐慌,老刑警劉巖朦前,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件介杆,死亡現(xiàn)場(chǎng)離奇詭異鹃操,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)春哨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門荆隘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悲靴,你說我怎么就攤上這事臭胜。” “怎么了癞尚?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵耸三,是天一觀的道長。 經(jīng)常有香客問我浇揩,道長仪壮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任胳徽,我火速辦了婚禮积锅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘养盗。我一直安慰自己缚陷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布往核。 她就那樣靜靜地躺著箫爷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪聂儒。 梳的紋絲不亂的頭發(fā)上虎锚,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音衩婚,去河邊找鬼窜护。 笑死,一個(gè)胖子當(dāng)著我的面吹牛非春,可吹牛的內(nèi)容都是我干的柱徙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼奇昙,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼坐搔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起敬矩,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蠢挡,沒想到半個(gè)月后弧岳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凳忙,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年禽炬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涧卵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡腹尖,死狀恐怖柳恐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情热幔,我是刑警寧澤乐设,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站绎巨,受9級(jí)特大地震影響近尚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜场勤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一戈锻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧和媳,春花似錦格遭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撼港,卻和暖如春坪它,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帝牡。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國打工往毡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人靶溜。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓开瞭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親罩息。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗤详,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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