当前位置:网站首页>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声明的变量都会成为全局变量
边栏推荐
猜你喜欢
leetcode-每日一题745. 前缀和后缀搜索(哈希和字典树)
vulhub靶场学习日记xxe-lab
04 【计算属性 侦听属性】
(Crypto essential dry goods) Detailed analysis of the current NFT trading markets
npm WARN config global `--global`, `--local` are deprecated. Use `--location solution
leetcode-每日一题735. 行星碰撞(栈模拟)
13 【代理配置 插槽】
NFTs: The Heart of Digital Ownership
(Crypto必备干货)详细分析目前NFT的几大交易市场
闭包(五)----一个常见的循环
随机推荐
NFT:数字所有权的核心
MySQL面试题大全(陆续更新)
Xiaobai learns reptiles - introduction to reptiles
Artifact SSMwar exploded Error deploying artifact.See server log for details
Year-end summary - the years are quiet~
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法
gin框架学习-Casbin进阶之策略管理API使用方法
gin框架学习-GORM框架进阶之CRUD接口(数据库增删改查操作)
MySQL高级语句(一)
The latest MySql installation teaching, very detailed
Three-party login using wallet Metamask based on web3.0
leetcode-438. 找到字符串中所有字母异位词(滑动窗口)
[Elastic-Job source code analysis] - job listener
The server time zone value ‘й‘ is unrecognized or represents more than one time zone
13 【代理配置 插槽】
mysql启动报错The server quit without updating PID file几种解决办法
元宇宙的前景及四大赛道
Kubernetes certificate validity period modification
在kali上搭建vulhub漏洞靶场
vulhub靶场学习日记xxe-lab