JavaScript中的作用域

JavaScript中的作用域

作用域:代码起作用的范围

变量起作用的范围是变量作用域

1.块级作用域

任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。
函数作用域就好理解了 ,定义在函数中的参数和变量在函数外部是不可见的。
javascript中没有块级作用域。
在C语言等语言中有块级作用域
/C语言 
#include <stdio.h> 
void main() 
{ 
int i=2; 
i--; 
if(i) 
{ 
int j=3; 
} 
printf("%d/n",j); 
}
运行这段代码,会出现“use an undefined variable:j”的错误。可以看到,C语言拥有块级作用域,因为j是在if的语句块中定义的,因此,它在块外是无法访问的。
而在JS中没有块级作用域
   //如果有块级作用域下面的代码的显示结果为 undefined undefined
     for(var i=0; i<10;i++){
            var num = i;
       }
       console.log(i);
       console.log(num);

2.词法作用域

就是在代码写好的那一刻,变量的作用域就已经确定了,这种作用域,就是所谓的词法作用域
和词法作用域相对的叫动态作用域 js中是词法作用域不是动态作用域。

 function f2(){
            var a = 456;
            function f1(){
                console.log(a);
            }
        }



        f2();

在JavaScript中唯一能产生作用域的东西是 函数!

4.词法作用域的规则

    函数允许访问函数外的数据.
    整个代码结构中只有函数可以限定作用域.
    作用域规则首先使用提升规则分析
    如果当前作用域中有了该变量, 就不考虑外面的同名变量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值