当前位置:网站首页>39.js--作用域
39.js--作用域
2022-07-13 17:36:00 【爱喝珍珠奶茶】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
1.作用域的定义以及规矩
var 关键字
var fn=; fn就是标识符
作用域:标识符(变量和函数名) 在哪些地方能够被访问 那些地方就是这个标识符的作用域
这些地方就是指的 函数的代码块内部和函数的代码块外部
(1) 规则1:函数内部的代码可以访问函数内部的标识符,也可以访问函数外部的标识符(副作用)
(2)规则2:函数外部可以访问函数外部的标识符,但是不能访问函数内部的标识符
总通常陈函数内部的标识符为局部标识符
2.作用域分类
作用域分为全局作用域和函数作用域(又叫局部作用域)两种
(1)全局作用域
所有全局变量和函数都是作为window对象的属性和方法创建的。全局变量拥有全局作用域,在javascript代码中的任何地方都是有定义的。 全局作用域直到应用程序退出例如关闭网页或浏览器时才会被销毁。
– JS中声明的全局变量是全局对象的属性;
– 函数体内不使用var声明而直接赋值的变量当做全局变量;
(2)函数作用域(局部作用域)
在函数内(var声明)的变量只在函数体内有定义。它们是局部变量,作用域是局部性的。函数参数也是局部变量,它们只在函数体内有定义。函数作用域中的所有代码执行完毕后,该作用域被销毁,保存在其中的所有变量和函数定义也随之销毁。
在函数体内,局部变量的优先级高于同名的全局变量,如果在函数内声明的一个局部变量或者函数参数中带有的变量和全局变量重名,那么全局变量就被局部变量遮盖。
案例1:
function fn () {
a=100
}
var a=200;
fn()
console.log(a)运行结果:

案例1注释:函数体内不使用var声明而直接赋值的变量当做全局变量
案例2:
function fn (a) {
// var a=300
a=100
}
var a=200;
fn(300)
console.log(a)运行结果:

案例3:fn(),fm()
function fn (a) {
//隐式声明:var a=200
function fm (a) {
console.log(a,122)
a=90
console.log(a,123)
}
fm(a) //fm(200)
console.log(a,124)
}
var a=200;
fn(a) //隐式声明:fn(200)
console.log(a,125)运行结果:

案例4: increment (){ }
var total=0;
function increment () {
var total=0
total=total+2
}
function decrease() {
total=total-2
}
increment()
increment()
decrease()
console.log(total)运行结果:

案例5: increment (){ }
var total = 0;
function increment() {
//隐式声明 var total = 0
total = total + 2
console.log(total)
}
increment() //隐式声明 {var total=0; total = total + 2}
increment() //隐式声明 {var total=0; total = total + 2}运行结果:

案例6:fn (){ }
var a = 10
function fn() {
console.log(a)
a = 40
var a = 20
console.log(a)
}
console.log(a)
fn()
console.log(a)运行结果:

边栏推荐
- Dark blue themed boss, can you add a typewriter function so that you can choose when typing
- Flink CDC MongoDB Connector 的实现原理和使用实践
- 系统总出故障怎么办,或许你该学学稳定性建设
- Data types and constraints
- C语言字符和字符串
- Collation of basic MySQL operations
- PV operation procedure questions
- How to view cookies in Internet Explorer
- 21天SQL打卡总结
- Kubernetes入坑篇
猜你喜欢

vue+axios+mysql实现分页查询,条件查询以及批量删除

Oil monkey script changes TW style

美团基于 Flink 的实时数仓平台建设新进展

Blue Bridge Cup: the second game of the 13th provincial competition of single chip microcomputer group

【无标题】

41.js--闭包

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

Flink CDC MongoDB Connector 的实现原理和使用实践

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

(CVPR-2022)用于改进步态识别的拉格朗日运动分析和视角嵌入
随机推荐
Array changes, but the view cannot be updated (reason and thinking)
Micro service mode: sidecar
快手实时数仓保障体系研发实践
PV操作程序题
蓝桥杯单片机第13届省赛题
Use of command line client
【Tensorflow2】AttributeError: ‘Tensor‘ object has no attribute ‘numpy‘ 解决 (tf.py_function)
非功能方面测试
美团基于 Flink 的实时数仓平台建设新进展
油猴脚本更改tw样式
基于ssm项目中pagehelper分页插件的使用(简单易上手)
性能测试分类
Flink CDC MongoDB Connector 的实现原理和使用实践
XML介绍
Dark blue themed boss, can you add a typewriter function so that you can choose when typing
JS数组的内置功能
Lombok @Data导致的hashCode的问题
Research and development practice of Kwai real-time warehouse guarantee system
P1664 clock in every day and feel good [getting started]
在线多行文本批量正则替换添加后缀工具