函数里的预解析

函数里的预解析

var a=1

function fn(a){

console.log(a)

a=2

}

fn(a)

console.log(a)


//预解析

// var a

// function fn(b){console.log(b);b=2}          函数里:fn(b){var b;console.log(b);b=2;b=a}

// a=1

// fn(a)

// console.log(a)

为什么第一个输出1,函数预解析里是怎么变量提升的啊?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好, 对于你的问题解答如下:

  1. 形参可以看看做是var了一个变量,但是与直接使用var声明的变量还是不同的,形参不会进行预解析。

  2. arguments不需要预解析。

祝学习愉快~

好帮手慕慕子 2020-08-31 09:47:33

同学你好, 对于你的问题解答如下:

  1. 使用var声明的变量才会预解析,直接写成a=2属于赋值语句,不会进行预解析的。

  2. 同学粘贴的代码,函数中输出结果为1的原因是:调用函数时,传递了参数名为a,值为1,在a =2这句代码之前,执行console.log语句中的a是传递的参数值1。

  3. 函数内只有使用了var声明的函数才会预解析,示例:

    函数内使用var声明的变量a存在预解析,所以在这句代码之前输出a的值为undefined,这句代码之后输出的值就是2了。

    http://img1.sycdn.imooc.com//climg/5f4c56760935467a05560339.jpg

    同学可以结合代码测试理解下。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 慕哥5103152 #1
    形参不是看作一个var 变量吗?
    2020-08-31 10:01:11
  • 提问者 慕哥5103152 #2
    argument 不是需要预解析
    2020-08-31 10:02:04
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师