分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

JS学习之函数的作用域

发布时间:2023-09-06 02:20责任编辑:顾先生关键词:作用域

作用域
?变量或者函数可访问的一个范围,以函数来划分,一个函数块就是一个作用域。
一 全局作用域
?全局:整个文档
?????????变量或者函数在函数外面声明,那它们就是全局变量或者全局函数,在这个页面的任何地方都可以访问的到。
?????????声明全局作用域的方法:
?????????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,停止查找(就近原则)

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

JS学习之函数的作用域

原文地址:https://www.cnblogs.com/xubj/p/9869903.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved