函数作用域

文章详细阐述了JavaScript中的变量类型,包括全局变量和局部变量,以及它们的作用域规则。全局作用域在代码执行前进行预编译,而局部作用域在函数执行前有其特有的预编译过程。函数内部的变量和函数只在函数内部可访问,而未使用var声明的变量会提升到全局作用域。函数调用时,执行顺序为形参和局部变量声明、实参赋值、函数提升和运行代码。对象在JavaScript中没有特定的作用域。
摘要由CSDN通过智能技术生成

 1.变量:

                全局变量:函数外部的变量,在任何地方都可以访问

                局部变量:函数内部的变量, 函数内部变量只能函数内部访问(var申明的变量)

  2.作用域

                全局作用域: 函数外部称之为全局作用域

                局部作用域: 函数内部称之为局部作用域

全局作用域:

 全局预编译:在代码之前预编译

                1.语法检查;

                2.创建GO(window): global Object{}  GO{}

                3.提升var声明的变量, 值为undefined

                4.提升function函数, 值为函数体

                5.执行非var非function的代码

                6.当浏览器窗口关闭或浏览器关闭,整个会被销毁

局部作用域:

 局部预编译:在函数执行之前

                1.语法检查

                2.创建AO对象 AO:{} active object

                3.提升var声明的变量,值为Undefined,提升到当前作用域的最前面,形参赋值

                4.实参传入赋值给形参

                5.提升function函数,值为函数体,提升到当前作用域的最前面

                6.执行非var、非function 得代码

                7.函数体内的变量,函数在函数执行完,AO对象立即被销毁

eg:

注意: 没有var声明的变量,会在执行到这一行的时候,提升到前一个作用域,前一个作用域没有,则变量为全局变量

eg:

eg:

 总结:

1.函数外部的变量/函数: 函数外部和里面都可以访问

 2.函数里面的变量/函数: 只能在函数里面访问,外部无法访问

 3.函数调用的时候 无论是在哪个作用域调用的  必须在这个函数生成的作用域去执行代码

4.函数运行时的执行顺序: 形/局部 >实 > 函 >运

即:函数运行时  执行的顺序  (1)形参和局部变量先声明 ( 2).把实参传入然后赋值给形参变量 (3).函数提升 (4).运行代码

注意:对象没有作用域

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值