JS中的作用域(Scope)

作用域
  • 作用域指一个变量的作用范围

  • 在JS中有两种作用域

    1.全局作用域

    2.函数作用域

全局作用域

直接编写在script标签中的js代码,都在全局作用域

全局作用域在页面打开时创建,在页面关闭时销毁

在全局作用域中,有一个全局对象window,我们可以直接使用

​ 他代表的是一个浏览器端口,他由浏览器创建,可以直接在浏览器中使用

在全局作用域中,

​ 创建的变量都会作为window对象的属性保存

​ 创建的函数都会作为window对象的方法保存

全局作用域中的变量都是全局变量

​ 在页面的任意部分都可以访问的到

console.log(window);//输出   [object window]

var a = 10;
console.log(window.a);//输出  10

function fun(){
    console.log("我是fun函数");
}
window.fun()//输出 我是fun函数

window.alert("hello");//输出hello
函数作用域
  • 调用函数时创建函数作用域,函数执行完毕之后,函数作用域销毁
  • 每调用一次函数都会创建一个新的函数作用域,他们之间是相互独立的
  • 在函数作用域中可以访问到全局作用域的变量,在全局作用域中无法访问到函数作用域的变量
  • 当在函数作用域中操作一个变量时,他会先在自身作用域中寻找,如果有就直接使用,如果没有则向上一级作用域中找,如果到全局作用域中也找不到就会报错
  • 函数中要访问全局变量要使用window函数
  • 在函数作用域中也有声明提前的特性
  • 函数声明也会在函数所有代码执行之前执行
  • 定义形参就相当于在函数作用域中声明了变量
var a = 10;
function fun(){
    var a = "我是fun函数中的a"
    console.log(a);//输出  我是fun函数中的a
    var b = 20;
    function fun2(){ 
        console.log(a);//输出   我是fun函数中的a
        console.log(window.a)//输出   10
    }
}

console.log(b);
fun();//输出10
fun();
fun();

var e = 23;
function fun6(e){//相当于在函数中var e
    alert(e);
}
fun();//输出undefined
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值