摘要:今天去面试有一个题目答错了我答是不可能滴,我答错了回答我以为相当于重复定义一个函数,第二个覆盖第一个,结果大错特错。我想应该是变量提升吧,实际执行顺序应该是函数先提升,变量再提升
今天去面试有一个题目答错了
var getName = function() { alert(1); }; function getName() { alert(2); } getName();
我答alert(1)——是不可能滴,我答错了回答alert(2), 我以为相当于重复定义一个函数,第二个覆盖第一个,结果大错特错。
我回来实验,alert(1)。我想应该是变量提升(hosting)吧,实际执行顺序应该是
function getName() { alert(2); } var getName; getName = function() { alert(1); } getName();
函数先提升,变量再提升
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/81709.html
摘要:同名变量和函数,函数会提升到最前边,变量其次,为什么不那为什么结果不是我们人工执行的呢原因是变量会被忽略,是的是忽略。。。同名变量解析完顺序是这样的忽略同名变量,声明会被提升,后边会忽略。 变量提升和函数提升基本上是面试必问题目 //先从一个面试题说起 console.log(a) if (a) { var a = 1; ...
摘要:等价于弹出全局变量和局部变量的区别的变量的是根据方法块来划分的也就是说以的一对大括号来划分。在函数内部,如果没有用进行申明,则创建的变量是全局变量,而不是局部变量了。 令人心痛的血淋淋教训,再犯这些错误我不是人。 setTimeout与console.log()执行顺序 setTimeout延时为0时, setTimeout(function(){ consol...
摘要:原文是这样说的不像那样会发生变量提升现象。这就导致了所有变量声明的语句都会被提升到代码的最前面。这就是变量提升。注意提出的新指令和是不会发生变量提升现象的,所以在使用语法时,一定要先声明再调用。 场景 开始读es6的时候,一开始介绍的是let和const指令,文章中就提到一个概念 => 变量提升。原文是这样说的:let不像var那样会发生变量提升现象。对我这个菜鸟来说,what?什么是...
摘要:即的变量提升此处变量未声明时便可以使用,其实是因为会自动将声明语句提升到顶部。但名字的初始化却是按其在代码中书写的顺序进行的,不受以上优先级的影响。 变量提升(hoisting) 在JavaScript中,函数、变量的声明都会被提升(hoisting)到该函数或变量所在的scope的顶部。即——JavaScript的变量提升. var x = 5; alert(x); ...
摘要:再次声明的函数会替代原有的函数第二点第一个函数中的指向。解决这些问题的关键是不要想当然,动手一步一步模拟执行顺序,模拟变量提升情况第二种面向对象问题或高阶函数等待更新 主要是解决JavaScript中比较难懂的部分,当然了,这部分经常在面试题中露面,这篇文章主要是讲解解题思路,对新手会有很大帮助(如果你仔细看的话)。书籍方面,我看的是《你不知道的javascript》,精髓就在里面喽。...
阅读 3286·2021-11-22 12:04
阅读 2679·2019-08-29 13:49
阅读 451·2019-08-26 13:45
阅读 2189·2019-08-26 11:56
阅读 967·2019-08-26 11:43
阅读 554·2019-08-26 10:45
阅读 1244·2019-08-23 16:48
阅读 2115·2019-08-23 16:07