1. 首页
  2. IT资讯

JS面试知识点 函数提升

“u003Cdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fdfic-imagehandleru002F2b14f048-808b-45d4-a5c9-872e9b91dc1c” img_width=”202″ img_height=”143″ alt=”JS面试知识点 函数提升” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E在JS中,函数声明有如下两种方式u003Cu002Fpu003Eu003Colu003Eu003Cliu003E函数声明式,如:u003Cu002Fliu003Eu003Cu002Folu003Eu003Cpreu003Efunction test(){u003Cbru003E …u003Cbru003E}u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E2.字面量形式,如:u003Cu002Fpu003Eu003Cpreu003Evar test = function(){u003Cbru003E …u003Cbru003E}u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E只有函数声明才存在函数提升,函数提升是指函数的声明会被移动到函数声明所在所用域u003Cu002Fpu003Eu003Cpu003E顶部去执行,这一点很类似于变量提升。u003Cu002Fpu003Eu003Cpu003EPS: 如果你不知道变量提升,可以参见这一篇文章:u003Ca class=”pgc-link” href=”https:u002Fu002Fwww.toutiao.comu002Fi6626571816099906055u002F?group_id=6626571816099906055″ target=”_blank”u003EJS面试知识点 变量提升u003Cu002Fau003Eu003Cu002Fpu003Eu003Cpu003E为了便于理解,我们看下面一个实例:u003Cu002Fpu003Eu003Cpreu003Etest();u003Cbru003Efunction test(){u003Cbru003E console.log(“test”);u003Cbru003E}u003Cbru003Eu003Cu002Fpreu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002F2baeb0d6-b793-4bde-a1ee-29c8b2e93de4″ img_width=”430″ img_height=”55″ alt=”JS面试知识点 函数提升” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E程序正常运行,并没有报错,这正是因为函数声明提升到了前面,相当于:u003Cu002Fpu003Eu003Cpreu003Efunction test(){u003Cbru003E console.log(“test”);u003Cbru003E}u003Cbru003Etest();u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E再来看下面一个问题:u003Cu002Fpu003Eu003Cpreu003Efunction test(){u003Cbru003E console.log(“test”);u003Cbru003E}u003Cbru003Etest();u003Cbru003Efunction test(){u003Cbru003E console.log(‘test2’);u003Cbru003E}u003Cbru003Etest();u003Cbru003Eu002Fu002F 这段代码的运行结果是怎样的呢?u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E如果你把这段代码拷贝到浏览器执行就会发现,函数两次执行的输出的结果都是 test2u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F9184de393be04ce889237997a4941bb3″ img_width=”630″ img_height=”477″ alt=”JS面试知识点 函数提升” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E这是因为当函数被重复声明时,后面的声明的函数会覆盖前面的。u003Cu002Fpu003Eu003Cpu003E好了,到这里,有没有对函数提升有更好的理解了呢?我们再来看下面一个问题:u003Cu002Fpu003Eu003Cpreu003Efunction test(){u003Cbru003E console.log(“test”);u003Cbru003E}u003Cbru003Etest();u003Cbru003Evar test =function(){u003Cbru003E console.log(‘test2’);u003Cbru003E}u003Cbru003Etest();u003Cbru003Eu003Cu002Fpreu003Eu003Cpu003E你觉得结果会是什么呢?欢迎留言讨论u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:JS面试知识点 函数提升

主题测试文章,只做测试使用。发布者:℅傍ㄖ免沦陷dε鬼,转转请注明出处:http://www.cxybcw.com/11246.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code