当前位置:网站首页>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声明的变量都会成为全局变量边栏推荐
猜你喜欢
![[Cloud native] Open source data analysis SPL easily copes with T+0](/img/89/4a96358956782ef9dacf0b700b54c3.png)
[Cloud native] Open source data analysis SPL easily copes with T+0

MySql创建数据表

常见JVM面试题及答案整理

05 【绑定样式 条件渲染 列表渲染】

gin框架学习-Gin框架和Gorm框架搭建一个简单的API微服务

碎片化NFT(Fractional NFT)

leetcode-829. 连续整数求和(数论)

Year-end summary - the years are quiet~

gin框架学习-Casbin进阶之策略管理API使用方法

Error: Cannot find module 'D:\Application\nodejs\node_modules\npm\bin\npm-cli.js'
随机推荐
First acquaintance with Flask
什么是EVM兼容链?
For penetration testing methods where the output point is a timestamp (take Oracle database as an example)
继承、Super,重写、抽象类、抽象方法 1(第七天)
闭包(四)----IIFE
The server time zone value ‘й‘ is unrecognized or represents more than one time zone
解决响应式数据依赖响应式数据无响应问题
工件SSMwar exploded 部署工件时出错。请参阅服务器日志了解详细信息
C language tutorial (2) - printf and data types that come with c
find、filter、map的区别
12 【nextTick 过渡与动画】
MySQL高级学习笔记
MySQL分页查询的5种方法
闭包(二)
leetcode-2321. 拼接数组的最大分数(差分+枚举)
常见JVM面试题及答案整理
The MySQL database in Alibaba Cloud was attacked, and the data was finally recovered
Three-party login using wallet Metamask based on web3.0
[Elastic-Job source code analysis] - job listener
04 【计算属性 侦听属性】