当前位置:网站首页>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声明的变量都会成为全局变量
边栏推荐
- let和const命令
- 元宇宙的前景及四大赛道
- Oracle数据库中的“limit”查询
- leetcode-每日一题565. 数组嵌套(标记图和并查集)
- Common JVM interview questions and answers
- Getting to know regular expressions
- Digital twins will be an important way to enter the "metaverse"
- 12 【网页布局总结 元素的显示与隐藏】
- mysql password modification method in Linux (pro-test available)
- vulhub靶场学习日记SickOs1.2
猜你喜欢
leetcode-1833. 雪糕的最大数量(排序+贪心)
Kubernetes certificate validity period modification
MySQL压缩包方式安装,傻瓜式教学
(Crypto essential dry goods) Detailed analysis of the current NFT trading markets
12 【nextTick 过渡与动画】
数字孪生将成为进入“元宇宙”一项重要的途径
MySQL面试题大全(陆续更新)
【云原生】微服务Nacos的简单介绍与使用
Using IIS10 to build an asp website in win11
11 【定位】
随机推荐
First acquaintance with Flask
The server time zone value ‘й‘ is unrecognized or represents more than one time zone
mac10.14中安装mysqldb
leetcode-每日一题745. 前缀和后缀搜索(哈希和字典树)
leetcode-每日一题873. 最长的斐波那契子序列的长度(哈希和二分)
[Ubuntu20.04 installs MySQL and MySQL-workbench visualization tool]
了解SSRF,这一篇就足够了
[Elastic-Job source code analysis] - job listener
[JVM Loading]---Class Loading Mechanism
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隔离级别,两个事务同时操作同一行数据会怎样?
MySQL压缩包方式安装,傻瓜式教学
DeFi 项目中的治理Token
07 【内置指令 自定义指令】
10 【高度塌陷与BFC】
局部变量成员变量、引用类型、this,static(第五天)
Using IIS10 to build an asp website in win11
解决响应式数据依赖响应式数据无响应问题
DeFi Token in the project management
NFT:数字所有权的核心