函数预解析

JavaScript语法规范中,在变量声明时,变量所在的作用域空间,会将变量的声明提升到所有代码的前面,就是语法规范中的变量预解析,防止代码出现语法错误

--语法规范中,针对函数也有预解析的操作,如果函数的声明方式是表达式声明语法,预解析过程和变量的预解析过程一致;如果是函数的标准声明方式,函数所在的作用域空间会将函数的完整声明提升到作用域空间所有代码的最前面,保障函数在该作用域中的正常执行

JS语法规范中,对于函数的预解析,和函数的声明方式有关

如果表达式方式声明的函数,预解析方式和变量一致,函数声明之前,函数名称中存储的数据是undefined

如果标准方式声明的函数,JS语法规范中会将整个函数进行预解析,函数名称中存储的是整个函数的声明

1、未声明直接使用------报错

2、先使用后使用---------undefined 

预解析分为 

                变量预解析--变量提升

                函数预解析--函数提升

代码示例:

fn1()
console.log(c)
console.log(b)
console.log(a)
function fn1(){
    var a=b=c=9
    console.log(a)
    console.log(b)
    console.log(c)
}

输出结果:9,9,报错,9,9,9

var a=b=c=9相当于vara=9;b=9;c=9

a,在函数内部声明的变量,只能适用于函数内部,属于局部变量

b,c在函数内部没有声明直接赋值,这种相当于全局变量在函数外部也可以使用

所以,在函数内部a,b,c都打印结果为9,函数外部b,c打印结果也是9,但a是局部变量在函数外部未声明,所以为报错

注:

        全局变量:函数内部未声明的变量以及在在 函数外部声明的变量-只有在浏览器关闭时才会销毁,会占用内存

        局部变量:形参以及在某一个函数内部声明的变量 -在项目关闭时就会进行销毁,节省资源并节省内存空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值