作用域的自己简单理解

从这块代码开始理解作用域吧。第一次发稿分享不想丢失了。小白一名

  //简单的使用方法
        var n = 100;
        function a () {
            var n = 200;
            function b () {
                var n = 300
                console.log(n)
            }
            b()
        }
        a();
        console.log(n)

1、全局作用域

  任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域:

  全局定义和最最最最外层函数定义的变量拥有全局作用域 :比如

 var n = "我是全局声明变量";
function a() {
    var m = '我是函数中声明变量'
    function b() {
        console.log(m)  //后台输出  “我是函数中声明变量”
        // 如果自己函数用没有这个声明,会找父级声明函数,假如父级也没有  将找全局 ,全局没有将会报错
    }
    b()
}
console.log(n) //输出 ”我是全局声明变量“
console.log(m)   // 输出  脚本错误  没有调用函数  m undefined
a() //输出  ”我是函数中声明变量“ 注:自身大作用域中没有的话将会执行子函数下的console。log
b() //报错  注、 这是在 a() 里面的函数  不能在全局中自己调用
// 注:所有未定义直接赋值的变量自动声明为全局作用域
function a_1() {
    var n = "我是函数中声明变量"; //  我声明变量
    m = '我是没有使用声明变量'
    console.log(n)  //在这里  只要调用函数就会打印出 ”我是全局声明变量“,这是因为声明在  a_1() 函数中了
}
a_1()  //这个里面不用在打印  因为函数中有了打印方式  只调用即可
console.log(m) 
// 一般人会认为报错,但是他会打印出 ”我是没有使用声明变量“,因为在作用域中没有使用 var let const 声明变量,他会在全局作用域中生成一个 var  m = "我是没有使用声明变量" ,在进行赋值
console.log(n)//  报错  原因明白上面代码后就懂了
// 注:变量m拥有全局作用域,而n在函数外部无法访问到。
/*
    所有window对象的属性拥有全局作用域
     一般情况下,window对象的内置属性都拥有全局作用域。
*/
function c(){
    var m1 ="我是函数中声明";
    function d(){
    alert(m1);
}
    d();
}
console.log(m1); //脚本错误
d(); //脚本错误

局部作用域

        和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域,例如下列代码中的m1和函数d都只拥有局部作用域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值