JS学习之函数的作用域

作用域
变量或者函数可访问的一个范围,以函数来划分,一个函数块就是一个作用域。
一 全局作用域
全局:整个文档
变量或者函数在函数外面声明,那它们就是全局变量或者全局函数,在这个页面的任何地方都可以访问的到。
声明全局作用域的方法:
1、把变量或者函数放在函数外面声明
2、变量不用var声明,直接给变量赋值;不管在函数外还是函数内声明
全局变量在任何地方都可以访问的到是因为全局变量是window的一个属性,window是一个全局对象,本身在页面中的任何位置都可以访问

 1     var a=10;
 2         console.log(a); //10  a 在函数外面声明是一个全局变量
 3  
 4       function  test(){
 5            var b=12;  //在函数内声明,是局部变量
 6            c=20;   // 没有用var 声明就是全局变量
 7            console.log(a);
 8       }
 9       test(); // 10 因为a 是在函数外面声明的,是全局变量,所以函数内部也可以访问
10       console.log(c);  //可以访问的到,
11       console.log(b); // 报错 b is not defined 因为b是局部变量,只能在函数内部使用,在函数外面无法访问的到

注意:1:尽量避免使用全局变量,可能会变量覆盖
一直存在内存中,当页面一打开就一直存在着内存中,当页面关闭的时候才会消失
2:声明变量的时候一定加上var 因为不建议使用全局变量

二  局部作用域

局部:函数范围内
变量或者函数在函数内部声明的,作用仅存在于声明的函数中,在函数外面无法访问
函数里面可以声明函数,就是函数嵌套(局部函数),可以访问父函数里的内容

 1  function  test(){
 2             var a=10; //局部变量
 3             var b=20;
 4             //在函数内部声明,是局部函数
 5             function test1(){
 6                  console.log(a+b);
 7             }
 8             test1(); // 只能在函数内部调用
 9   }
10       test();  // 在函数外面声明,是一个全局函数
11       console.log(a); // 报错 a 是一个局部变量,只能在test函数内部使用,在test函数外无法访问
12       // 同样的道理也无法访问到b ,test1()

注意:局部变量和局部函数只能在声明他们的地方用,在其他地方无法访问,会直接报错

三 作用域链

 

变量与函数的查找规则
查找规则:如果一个函数需要用到一个变量,先会在自己的作用域里去找这个变量,如果自己有就直接使用自己的,如果自己没有就会一层一层往外找直到找到外面的变量,找到后就用外面的变量

 1       var a=10;
 2       function test(){
 3           console.log(a);
 4 
 5       }
 6       test(); // 10  函数先会在自己的作用域里去找a,发现没有找到就会找他父级,在父级中找到了一个a,就用这个a
 7       function  test1(){
 8              var a=12;
 9        console.log(a);
10       }
11       test1(); // 12 在自己的作用域中找到了a,就会用这个a,停止查找(就近原则)

注意:作用域链会一层一层往外找,不会往里面找

 

转载于:https://www.cnblogs.com/xubj/p/9869903.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值