JavaScript作用域

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

在JS中一共有两种作用域:

        1、全局作用域

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

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

                -- 在全局作用域中有一个全局对象window

                        它代表的是一个浏览器的窗口,它由浏览器创建,可以直接使用

                -- 在全局作用域中:

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

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

                -- 全局作用域的变量都是全局变量,在页面的任意部分都可以访问

        2、函数作用域

                -- 调用函数创建函数作用域,函数执行完毕以后,函数作用域销毁

                -- 每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的

                -- 在函数作用域中可以访问到全局作用域的变量

                -- 相反,在全局作用域中无法访问到函数作用域的变量

   

就近原则:

        当函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用,如果没有       则向上一级作用域中寻找,直到找到全局作用域,如果全局作用域中仍然没有找到,则会报错(ReferenceError)

        若想直接找全局作用域的变量,可以使用window.变量
 

var a = 123
function fun(){
    alert(a);  //a从全局中找
}
fun(); //返回123



var a = 123
function fun(){
    alert(a);  //有var,函数中的alert(a)从函数中找,a未undefined
    var a = 456;
}
fun();
alert(a); //全局的alert(a)从全局中找,为123

/

var a = 123
function fun(){
    console.log(a)  //从全局中找,为123
    a=456  //没有var a,此时是对全局a的重新赋值
}
fun()
console.log(a)  //全局a已被重新赋值为456,则控制套输出为456

/

var a = 123
function fun(a){    //有形参
    console.log(a)  //此时a为形参a,没有赋值则为undefined
    a=456  //为函数中的a赋值,即给形参a赋值为456,但全局a没有改变
}
fun()     //没有传实参
console.log(a)  //仍为123

/

var a = 123
function fun(a){    //有形参,实参123赋值给形参a
    console.log(a)  //此时a为形参a,有赋值则为123
    a=456  //为函数中的a赋值,即给形参a赋值为456,但全局a没有改变
}
fun(a)     //传实参
console.log(a)  //仍为123

this关键字:

        -- 解析器在调用函数每次都会向函数内部传递一个隐含的参数,这个隐含的参数就是this

       -- this指向的是一个对象,该对象称为函数执行的上下文对象,根据函数的调用方式不同,this会指向不同的对象

               - 函数调用方式,this永远为window(函数为window的方法)

               - 以方法形式调用,this为该方法的对象

               - 也就是,谁把函数调用了,this就指向谁(即this为当前的这个对象)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值