当前位置:首页 > javascript > 正文内容

js预编译输出题-解题思路

自由小鸟2年前 (2023-11-01)javascript1217
function fn(a,c){
    console.log(a) 
    var a=123
    console.log(a)
    console.log(c)
    function a(){}
    if(false){
       var d=678 
    }
    console.log(d)
    console.log(b)
    var b=function(){}
    console.log(b)
    function c(){}
    console.log(c)
}
fn(1,2)

做这种题可以按这个步骤画出来
编译阶段:
编译时候需要做了哪些事情

1,创建ao对象
2, 找形参和变量的声明,作为ao对象的属性名,值为undefined
3, 实参和形参相统一,就是看是否有传进来参数
找到函数声明,会覆盖变量的声明

编译结束后开始解释逐行执行阶段,从上往下一行行开始
那以上面的步骤套用一下下面的题试试
第一步和第二步一起做
js复制代码ao:{
a:undefined
c:undefined
d:undefined
b:undefined
}

第三步实参和形参相统一
js复制代码ao:{
a:1
c:2
d:undefined
b:undefined
}

第四步 找到函数声明,会覆盖变量的声明
js复制代码ao:{
a:function a(){}
c:function c(){}
d:undefined
b:undefined
}

js复制代码开始代码一行行的执行
function fn(a,c){
console.log(a) //function a(){}
var a=123
console.log(a) //123
console.log(c) //function c(){}
function a(){}
if(false){
var d=678
}
console.log(d) //undefined
console.log(b) //undefined
var b=function(){}
console.log(b) //function (){}
function c(){}
console.log(c) //function c(){}
}
fn(1,2)

自己在掘金上的文章
作者:前端_小卢
链接:https://juejin.cn/post/7264232104800780348
来源:稀土掘金

版权声明:本文由Web学习之路发布,如需转载请注明出处。

本文链接:https://www.webge.net/?id=183

返回列表

上一篇:数据各种去重复,合并方法

没有最新的文章了...

“js预编译输出题-解题思路” 的相关文章

HTTP协议类

HTTP协议类

HTTP协议的主要特点    1,简单快速,每个资源是固定的,通过固定url就可以了    2,灵活  head有数据类型,一个HTTP协议可以完成不同数据类型的传输    3,无连接&nb...

js原型链

js原型链

创建对象有几种方法:原型,构造函数,实例,原型链左边 实例对象  instanceof 构造函数  来判断是不是同一个引用原型用constructor 比instanceof来判断继承更严谨var o3=new M()o3 instanceof  M  &nb...

数组有哪些原生方法

赋值方法:pop 和 push   pop // 删除数组最后一个元素,返回被删除的元素push // 在数组尾部插入1-N个元素,返回操作后数组的lengthshift     //  删除数组第一个元素,返回被删除的元素uns...

函数参数会生成新的作用域

函数参数会生成新的作用域

如果函数定义了参数就会自动生成新的作用域,这时候里面的变量值就会先从参数新的作用域找,如果没有就会再往上面找直到全局...

event-loop

event-loop

如果知道js运行机制,在工作中会帮助我们更好的理解和编写代码,也知道为什么js是单线程js为什么是单线程原因,就是为了避免DOM渲染的冲突异步是一种“无奈”的解决方案,虽然有很多问题,如下:1,没按照书写方式执行,可读性差2,callback中不容易模块化什么是event-loop1,同步代码,直接...

js原型链

js原型链

看到好的文章赶紧都收藏起来,但是有时收藏的太多内存不够呀,还是记录到我的博客上比较好,有时好的文章突然的某天就打不开了,那是多少痛的领悟,哈哈 文章转自 https://juejin.im/post/5d31ea79e51d457778117452...