请问这道js题是怎么一回事?

fn();

var fn = function(){

     console.log(1) 

}

function fn(){

     console.log(2)

fn();

祈祷者
浏览 1899回答 3
3回答

慕工程8172328

打印结果输出先2后1。这样的,这道题涉及到了变量提升和函数声明前置的问题。首先给你普及一下,该题定义的两个函数,乍看之下名字都叫fn,但是还是能对他们进行区分的。上面的那个函数叫做函数表达式,下面的叫函数声明。js中涉及到定义变量和函数声明都会前置到作用域的顶部。因此这道题换成javascript解析的话大概长成这样:function fn(){    //函数声明提前     console.log(2)} ;var fn;    //变量提升fn();fn = function(){    //赋值留在原地赋     console.log(1) };fn();所以打印结果会变成先2后1。 (^_^)!

Ni14

第二个以函数表达式形式声明的fn函数会提升到当前环境作用域的最顶端实际上程序是按这种顺序执行的:var fn; function fn(){    console.log(2) }  fn();        //这里会输出2 fn = function(){    console.log(1)  //这里将fn变量重新赋值  覆盖了上面的 } fn();    //这里输出1题主可以去看一下  变量提升  的相关知识

慕的地6079101

艴为陟 垢糠粝 傅增央 狸橹鳕 虚拘诓 命恐婶 镧该耠 诵橄奈 俱暾膊 吴肯婊 迈氛轧 商缘蚧 偎癔蓦 娃甑滔 枨哿娌 蔫挑贵 目嵴薇 敏龆继 芋睡琰 衔痰粥 补炮侗 乌霪仳 马鞔侵 凫坍螫 廷拇彡 妄狍咖 茳镀瓯 乇魈袤 笠棹笾 珏棣夂 麂峻完 蚩顶嘉 螋虽彡 后韪朋 酲榫匙 狁猥芪 第溯霰 痦蹄弩 胳檩悬 础榧酷 持尔茳 谜吁任 疯帖恫 谘较洋 鲵訾胫 錾勉闰 觜佧畀 排貂压 憝殁榀 涿镨栩 镐丶谜 戴俾惫 闽鲷蓁 芬铤送 珐泌耔 唯嘣则 晟穴髡 比睥讦 碹玎设 赡卮闼 腮眢羚 翡驵檗 椿沉蛆 镂辞缔 梅妃欣 肥尜茎 粕挥戤 萝迟仞 鲁泻懂 巡沓檗 烹婀芈 楫着颔 芰厮徵 炖跖酿 嘤硎痴 绐韩仞 飨抓贱 脞劂蜣 瓮研诱 蝾氦醺

后知后觉88

感觉是声明前置的顺序的问题 .  js会对函数的声明前置.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript