進(jìn)階任務(wù)3

函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別##

函數(shù)聲明:function functionName(){}
函數(shù)表達(dá)式:var fn = function(){}
區(qū)別:
1.函數(shù)聲明會(huì)在代碼開始前定義兔甘,函數(shù)表達(dá)式遇到時(shí)才會(huì)執(zhí)行茅郎。
2.函數(shù)聲明必須有函數(shù)名,函數(shù)表達(dá)式則可以省略蜗顽。

什么是變量的聲明前置贫母?什么是函數(shù)的聲明前置##

變量聲明前置就是在一個(gè)作用域塊中狂丝,所有的變量都被放在塊的開始出聲明劳澄。JavaScript引擎將函數(shù)名視同變量名皂林,所以采用function命令聲明函數(shù)時(shí),整個(gè)函數(shù)會(huì)像變量聲明一樣乱凿,被提升到代碼頭部顽素,只要函數(shù)在代碼中進(jìn)行了聲明咽弦,無論它在哪個(gè)位置上進(jìn)行聲明,js引擎都會(huì)將它的聲明放在范圍作用域的頂部胁出。

arguments 是什么##

arguments 是一個(gè)類數(shù)組對(duì)象型型。代表傳給一個(gè)function的參數(shù)列表。在函數(shù)內(nèi)部全蝶,你可以使用arguments對(duì)象獲取到該函數(shù)的的所有傳入?yún)?shù)

函數(shù)的"重載"怎樣實(shí)現(xiàn)##

function printInfo(name,age,sex) {
if(name) {
console.log(name);
 }
if(age) {
console.log(age);
 }
if(sex) {
console.log(sex);
 }
}
//printInfo(27 ,'male') 輸出 27 male

立即執(zhí)行函數(shù)表達(dá)式是什么闹蒜?有什么作用##

當(dāng)JS執(zhí)行到該行代碼時(shí),函數(shù)會(huì)被定義且立即執(zhí)行裸诽,叫做立即執(zhí)行函數(shù)表達(dá)式嫂用。
使用立即執(zhí)行函數(shù)表達(dá)式可以創(chuàng)建一個(gè)獨(dú)立的作用域,形成隔離丈冬,避免污染全局

求n!嘱函,用遞歸來實(shí)現(xiàn)##

function factor(n) {
    if (n>0) {
      if (n===1) {
        return 1;
      }
      return n * factor(n-1);
    } else if (n===0) {
      return 0;
    } else {
      if (n<0) {
      return 'ERROR'
      }
    }
  }

以下代碼輸出什么?##

    function getInfo(name, age, sex){
        console.log('name:',name);
        console.log('age:', age);
        console.log('sex:', sex);
        console.log(arguments);
        arguments[0] = 'valley';
        console.log('name', name);
    }

getInfo('饑人谷', 2, '男'); 
//name:饑人谷  age:2  sex:男   
//['饑人谷'埂蕊,2往弓,'男']   
//name valley

getInfo('小谷', 3); 
// name:小谷  age:3 sex:undefined 
// ['小谷',3]  
// name valley

getInfo('男');
// name:男 age:undefined sex:undefined 
// ['男'] 
//name valley

寫一個(gè)函數(shù)蓄氧,返回參數(shù)的平方和函似?##

   function sumOfSquares(){
     var sum=0;
     for (var i=0;i<arguments.length;i++) {
     sum += (arguments[i]*arguments[i])
   }
     return sum;  
}
   var result = sumOfSquares(2,3,4)
   var result2 = sumOfSquares(1,3)
   console.log(result)  //29
   console.log(result2)  //10

如下代碼的輸出?為什么?##

    console.log(a);// 變量聲明前置喉童,a未賦值撇寞,undefined
    var a = 1;
    console.log(b); //b未定義變量,報(bào)錯(cuò)

如下代碼的輸出堂氯?為什么?##

    sayName('world');
    sayAge(10);
    function sayName(name){
        console.log('hello ', name);  // hello world 因?yàn)楹瘮?shù)聲明中變量和函數(shù)聲明提前不影響調(diào)用蔑担;
    }
    var sayAge = function(age){
        console.log(age);       //報(bào)錯(cuò)  函數(shù)表達(dá)式需要放在調(diào)用之前;
    };

11咽白、如下代碼輸出什么? 寫出作用域鏈查找過程偽代碼##

var x = 10
bar()   //輸出10
function foo() {
  console.log(x)  //輸出10
}
function bar(){
  var x = 30
  foo()
}

查找過程

globalContext = {
  AO: {
      x:undefined -->10,
      foo:function,
      bar:function  
    }
  scope:null
}

barContext = {
 AO: {
     x:undefined-->30啤握,
   }
 scope: globalContext.AO
}

fooContext ={
AO: { }
scope: globalContext.AO
}

12、如下代碼輸出什么? 寫出作用域鏈查找過程偽代碼##

var x = 10;
bar()   //輸出30
function bar(){
  var x = 30;
  function foo(){
    console.log(x)    //輸出30
  }
  foo();
}   

12查找過程

globalContext= {
  AO:  {
      x: undefined-->10,
      bar:function
    }
  scope:null
}

barContext = {
  AO:  {
           x:undefined-->30,
           foo:function
}
scope: globalContext.AO

fooContext = {
   AO :{}
   scope: barContext.AO
}

13晶框、如下代碼輸出什么? 寫出作用域鏈查找過程偽代碼##

var x = 10;
bar()   //輸出30
function bar(){
  var x = 30;
  (function (){
    console.log(x)
  })()
}

查找過程

globalContext= {
  AO: {
      x:10,
      bar:function
}
scope:unll
}

barContext = {
AO:{
x: undefined-->30,
匿名函數(shù):function
}
scope: globalContext.AO
}

匿名函數(shù)context = {
AO :{}
scope: barcontext.AO

14排抬、如下代碼輸出什么? 寫出作用域鏈查找過程偽代碼##

var a = 1;

function fn(){
  console.log(a)  //輸出undefined
  var a = 5
  console.log(a)  //輸出5
  a++  //6
  var a //6
  fn3()  //輸出1
  fn2()  //輸出6
  console.log(a) //20

  function fn2(){
    console.log(a)
    a = 20
  }
}

function fn3(){
  console.log(a)
  a = 200
}

fn() //undefined  5 1 6 20 
console.log(a)  //200

查找過程

globalContext= {
  AO: {
      a: undefined-->1-->200,
      fn:function,
      fn3:function
}
scope:null
}

fnContext = {
AO:{
    a:underfined-->5-->6-->20,
    fn2:function
}
scope: globalContext.AO
}

fn3Context = {
AO:{}
scope :globalContext.AO
}

fn2Context = {
 AO: {}
scope: fnContext.AO
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市授段,隨后出現(xiàn)的幾起案子蹲蒲,更是在濱河造成了極大的恐慌,老刑警劉巖侵贵,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件届搁,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)咖祭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔫骂,“玉大人么翰,你說我怎么就攤上這事×尚” “怎么了浩嫌?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長补胚。 經(jīng)常有香客問我码耐,道長,這世上最難降的妖魔是什么溶其? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任骚腥,我火速辦了婚禮,結(jié)果婚禮上瓶逃,老公的妹妹穿的比我還像新娘束铭。我一直安慰自己,他們只是感情好厢绝,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布契沫。 她就那樣靜靜地躺著,像睡著了一般昔汉。 火紅的嫁衣襯著肌膚如雪懈万。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天靶病,我揣著相機(jī)與錄音会通,去河邊找鬼。 笑死嫡秕,一個(gè)胖子當(dāng)著我的面吹牛渴语,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播昆咽,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼驾凶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了掷酗?” 一聲冷哼從身側(cè)響起调违,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泻轰,沒想到半個(gè)月后技肩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年虚婿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旋奢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡然痊,死狀恐怖至朗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剧浸,我是刑警寧澤锹引,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站唆香,受9級(jí)特大地震影響嫌变,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜躬它,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一腾啥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冯吓,春花似錦碑宴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锣披,卻和暖如春贞间,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雹仿。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國打工增热, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人胧辽。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓峻仇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親邑商。 傳聞我的和親對(duì)象是個(gè)殘疾皇子摄咆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

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

  • 1.函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 函數(shù)聲明 使用 function 關(guān)鍵字聲明一個(gè)函數(shù) 聲明不必放到調(diào)用的前面,...
    Soarse閱讀 207評(píng)論 0 0
  • 一:函數(shù)聲明和函數(shù)表達(dá)式的區(qū)別 函數(shù)聲明必須帶有標(biāo)示符(Identifier)(即函數(shù)名稱)人断,而函數(shù)表達(dá)式則可以省...
    osborne閱讀 230評(píng)論 0 0
  • 1. 函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 函數(shù)聲明:聲明不必放到調(diào)用的前面吭从; 函數(shù)表達(dá)式:聲明必須放到調(diào)用的前面,因?yàn)?..
    cheneyzhangch閱讀 229評(píng)論 0 0
  • 【奇思怪夢系列】 夢是很奇怪的思想恶迈,有根有源涩金,卻無處可尋。多年前,我就有個(gè)想法步做,想把自己的夢境躍然紙上副渴,留住每...
    豐系豐色閱讀 152評(píng)論 0 0
  • 雨,來的如此慢 這般清凈 像我憂郁的呼吸 悄然無力 我佯裝跌在水里 煩心的積蓄 再多也是浪費(fèi) 于是不再去想 淚水是否卑微
    Mr衛(wèi)一閱讀 460評(píng)論 0 1