当前位置:网站首页>js作用域与作用域链
js作用域与作用域链
2022-07-13 17:37:00 【frontEndSmallWhite】
一、作用域
1、全局变量的作用
尽量少使用全局变量
①、共同操作同一个变量
<script>
var num=0;
function add(){
num++
console.log(num)
}
function remove(){
num--
console.log(num)
}
add()
add()
remove()
remove()
</script> 
二、作用域链
实际上就是函数的[[Scopes]]属性中保存的属性,每个属性对应的就是作用域链连接的作用域,[[Scopes]]有先后顺序,查找变量的时候会在[[Scopes]]中顺序查找;

三、作用域注意事项
1、不声明直接赋值的变量会成为全局变量
js是弱类型语言,当赋值的变量不存在时,会在最外层的全局仓库中创建该变量;
<script>
//相当于会在这里的全局仓库中创建一个全局变量num
//var num = 10
function a(){
num = 10;
}
a();
console.log(num) //10
</script>![]()
但是不声明直接赋值的变量被多层函数包裹的时候不能在全局输出,会出现报错
<script>
//相当于会在这里的全局仓库中创建一个全局变量num
//var num = 10
function a(){
function b(){
function c(){
num = 10;
}
}
}
a();
console.log(num)
</script>
2、全局变量或者函数会自动成为window的属性
console.log = window.console.log
alert = window.alert
<script>
var num = 10;
window.console.log(window.num)
</script>3、函数的形参会默认定义为函数的局部变量
<script>
function func(a,b){} //在这里a,b就是函数的局部变量
</script>边栏推荐
- 38.js--原型练习案例(校招面试题)
- dva数据流
- Dark blue themed boss, can you add a typewriter function so that you can choose when typing
- 【黄啊码】PHP实现文件下载,支持断点续传
- ES6--箭头函数
- 【vue】keep-alive清除缓存最简单暴力的方法
- [tensorflow2] implementation of gradient inversion layer (GRL) and domain antagonism training neural network (Dann)
- ThreadLocal造成的内存泄漏
- (CVPR-2022)用于改进步态识别的拉格朗日运动分析和视角嵌入
- 自上而下获取父节点的id的集合
猜你喜欢

CONDA based operation record of starting a tensorflow GPU (2.6.0) environment on win10 from scratch (2022.07)

keil报错: ERROR 118 (ERRONEOUS REFERENCE TO EXTERNAL VARIABLES) 解决方案及原因

Solve the problem of unable to load authentication plugin 'caching' when idea2020 connects to MySQL 8_ sha2_ Password 'exception

XML介绍

41.js--闭包

Call GPU completely through torch on pycharm (the most detailed)

ES6--Set

【黄啊码】MySQL的这些小知识点,初入门的你必须得学会
c语言中的输入输出函数之printf函数

<statement> or DELIMITER expected, got ‘id‘
随机推荐
XML introduction
ES6--string(字符串)
ES6--let与const
Jmeter相关知识整理
fastadmin的二次开发教程【简单搭建、多表格问题,API开发】
【黄啊码】微软IE浏览器将退役 网友说:以后考试报名咋办?
js--笔试题(集)
ES6新增的模块化
sql_server2014下载与安装
ES6--Set
JS中Math对象
ES6--模块化
Implementation of drop-down box function in SSM project
JS中的JSON(推出对象深拷贝)
What if the system always fails? Maybe you should learn about stability construction
The 13th provincial competition of Bluebridge cup single chip microcomputer
js--数据系统内置功能
Svelte 官方入门教程(2)—— 反应性
油猴脚本更改tw样式
Summary of wechat red envelope project test