当前位置: 首页 > news >正文

Web前端学习:章三 -- JavaScript预热(二)

六五:作用域与function

function:函数,不是数学上的函数,与写代码有关
JS中的函数:运用它,起个名字,然后对函数进行调用,即可将函数中的内容执行一遍

1、function

最基本的作用域
可以理解为一个打包方法

(1)标准写法:

function必须得有个名字

function 名字(){这里可以写要调的东西或函数的内容
};
名字();

在这里插入图片描述

(2)分析

function看做函数
function AI的{}中,写函数的内容,即要被调用的东西
运行AI(),对函数function进行调用,函数即会执行{}中本身的内容

2、作用域

作用在一定的区域,在该区域之外就不起作用。
函数就是一个最基本的作用域。

因为 - function在JS中为函数
而且 - 函数就是一个最基本的作用域
所以 - 任何function都是一个作用域

JS存在于大的script标签中,function就是个私人区域,function之外的变量都是公用的。
因为a是公用的,所以函数Ai可以取用a:
在这里插入图片描述
因为函数Ai是私人的,公共范围的alert不能拿到b的值,所以报错且提示b没有被定义(没找到b)
在这里插入图片描述
两个函数不相通,一样报错
在这里插入图片描述
函数定义之后可以任意调用:
在这里插入图片描述

六五:预解析和变量提升

1、预解析

预先解析,JS第一次解析代码叫预解析

(1)JS代码运行原理

JS本身会解析两次代码:
第一次 —— 预解析:粗略过一遍,检查代码是否为JS的代码格式,不管运行错误
第二次 —— 正常解析:正常运行代码,更仔细

1、预解析出现错误:
就是语法出去,代码完全不执行,所有写的JS均失效
2、正常解析出现错误:
即运行错误,从错误代码开始,后面的均不执行

2、变量提升

在预解析过程中会触发两个现象:报错 - 和 - 变量提升

变量提升:即把变量提到该作用域的最上面,赋的值不会提升
在这里插入图片描述
在这里插入图片描述
解析:
如上两图,结果都是undefined。
但是图一,是正常顺序,因为a没有赋值,所以提示undefined
查看图二,a赋值10,但是在alert的下面,在这里触发了变量提升,把变量a提到了上面,但是赋值10不会提上去,所以与图一结果一致,有变量a但是没有值

1、变量提升规则:

1、只有有作用域的位置会发生变量提升
在这里插入图片描述

2、只有有申明的东西才会提升(即赋值)

3、JS输出方式

1、alert:弹窗

在这里插入图片描述

2、console.log:打印

网页右键-检查-console,查看结果
在这里插入图片描述

4、唯一性验证

1、外面的a被里面的a覆盖
在这里插入图片描述
2、每个作用域都会触发变量提升
每个作用域都会触发变量提升
每个作用域都会触发变量提升
解析:触发了变量提升,所以20行的a被提升到18,不会提升值,所以在18行出现一个看不到、未赋值的a,这个a会覆盖16行的a,所以这里打印的是未赋值的a,即undefined。
在这里插入图片描述

4、流程

函数 = 作用域 => 进行预解析 => 触发变量提升
在这里插入图片描述

http://www.lryc.cn/news/34740.html

相关文章:

  • Excel绘制数据对比表格-表格可视化
  • 究竟是谁负了谁,来自底层测试的2022年终总结
  • C++——IO流
  • 网络 | UDP与TCP协议讲解 | TCP可靠性是怎样实现的?
  • JavaEE——简单介绍Thread类以及线程的基本操作
  • Java的数据库编程:JDBC
  • 蓝桥冲刺31天之第六天
  • Streamlit 工具记录
  • GreenPlum小结
  • C语言中数组和指针
  • Leetcode.剑指 Offer II 022 链表中环的入口节点
  • 4种不同编程语言的打印方式
  • websocket介绍
  • Educational Codeforces Round 144 (Rated for Div. 2),C,D
  • 【redis学习篇】Redis三种持久化方式详解
  • 垃圾回收中的分代年龄
  • 蓝桥杯-左移右移(2022国赛)
  • 你还在手撸SQL?ChatGPT笑晕在厕所
  • 【Redis】Redis慢查询
  • 【Kubernetes】第二十一篇 - k8s 项目部署流程和操作梳理
  • 推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术
  • 【项目精选】基于SSH的医院在线挂号系统(视频+论文+源码)
  • Pandas库:从入门到应用(一)
  • MySQL中concat()、concat_ws()、group_concat()函数使用
  • 【JavaEE初阶】第四节.文件操作 和 IO (上篇)
  • 开源免费堡垒机Teleport堡垒机的安装
  • 图形报表ECharts
  • 便捷式储能电源核心技术--单相逆变器设计
  • Gamma矫正
  • 速懂cookie,session,token