当前位置:网站首页>js中的全局作用域与函数作用域
js中的全局作用域与函数作用域
2022-07-31 05:11:00 【杂乱无章的我】
作用域:
作用域指一个变量的作用的范围,在街上中一共有两种作用域:
函数作用域存在于函数之中,全局变量可以使用于整个程序中。两种作用域的关系如下图所示:

如上图所示,函数作用域1与函数作用域2均处于全局作用域中。且函数作用域1与函数作用域2两个作用域互不相关,每一个独立的函数作用域中的变量互不影响。在函数作用域中如果有未定义的变量,则会像全局作用域中寻找。
全局作用域:
全局作用域:
- 直接编写在script标签中的js代码,都在全局作用域
- 全局作用域在页面打开时创建,在页面关闭时销毁
- 在全局作用域中有一个全局对象window,它代表的是一个浏览器的窗口,
它由浏览器创建的我们都可以直接使用。
- 在全局作用域中:创建的变量都会作为window对象的属性保存。
创建的函数都会被作为window对象的方法保存。
- 全局作用域中的变量都是全局变量,在页面的任何的部分都可以访问到。
变量的声明提前:使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值)
但是如果声明变量时不适用var关键字,则变量不会提前声明。
如:console.log(a);var a = 1;等价于a = 1; console.log(a);
函数的声明提前:使用函数声明形式创建的函数function函数(){}
它会在所有的代码执行之前就被创建,所以我们可以在函数声明前来对函数进行调用函数
使用函数表达式创建的函数,不会被声明提前,所以不能在声明前进行调用函数作用域:
函数作用域
- 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁。
- 每调用一次函数就会创建一个新的函数作用域,它们之间是相互独立的。
- 在函数作用域中可以访问到全局作用域的变量。在全局作用域中无法访问到函数作用域的变量。
- 当在函数作用域操作一个变量时,它先在自身作用域中寻找,如果有就直接使用。
如果没有则向上一级作用域寻找。如果全局作用域仍然没有找到,则会报错。
如: var a =10 function(){ var a =1 ; console.log(a);};fun()输出结果为1.
var a =10 function(){ console.log(a);};fun() 输出结果为10
在函数作用域也有声明提前的特性,
使用var关键字声明的变量,会在函数中所有的代码执行之前被声明
在函数中,不适用var声明的变量都会成为全局变量边栏推荐
猜你喜欢

The feign call fails, JSON parse error Illegal character ((CTRL-CHAR, code 31)) only regular white space (r

10 【组件编码流程 组件自定义事件 全局事件总线】

继承、Super,重写、抽象类、抽象方法 1(第七天)

Yuan prospect and four track of the universe

MySQL高级语句(一)

带你搞懂MySQL隔离级别,两个事务同时操作同一行数据会怎样?

DeFi 项目中的治理Token

【Elastic-Job源码分析】——作业监听器

What is the difference between NFT and digital collection?

工件SSMwar exploded 部署工件时出错。请参阅服务器日志了解详细信息
随机推荐
C language tutorial (3) - if and loop
12 【网页布局总结 元素的显示与隐藏】
leetcode-每日一题731. 我的日程安排表 II
DeFi 项目中的治理Token
碎片化NFT(Fractional NFT)
【ubuntu20.04安装MySQL以及MySQL-workbench可视化工具】
gin框架学习-Gin框架和Gorm框架搭建一个简单的API微服务
Using IIS10 to build an asp website in win11
[Ubuntu20.04 installs MySQL and MySQL-workbench visualization tool]
常见JVM面试题及答案整理
Build vulhub vulnerability shooting range on kali
leetcode-每日一题剑指 Offer II 041. 滑动窗口的平均值(队列模拟)
Take you to understand the MySQL isolation level, what happens when two transactions operate on the same row of data at the same time?
MySQL compressed package installation, fool teaching
What is the difference between NFT and digital collection?
Fragmented NFT (Fractional NFT)
16 【打包上线 图片懒加载】
leetcode-2321. 拼接数组的最大分数(差分+枚举)
Digital twins will be an important way to enter the "metaverse"
For penetration testing methods where the output point is a timestamp (take Oracle database as an example)