【JavaScript】13_函数的返回值 + 箭头函数的返回值 + 作用域 +作用域链

news/2024/11/19 7:25:50/

7、函数的返回值

在函数中,可以通过return关键字来指定函数的返回值

返回值就是函数的执行结果,函数调用完毕返回值便会作为结果返回

任何值都可以作为返回值使用(包括对象和函数之类)

如果return后不跟任何值,则相当于返回undefined

如果不写return,那么函数的返回值依然是undefined

return一执行函数立即结束

        <script>function sum(a, b) {// console.log(a + b)// 计算完成后,将计算的结果返回而不是直接打印return a + b}function fn() {// return {name:"孙悟空"}// return ()=>alert(123)// returnalert(123)returnalert(456)}let result = fn()// result = sum(123, 456)// result = sum(10, result)console.log("result =", result)</script>

8、箭头函数的返回值

箭头函数的返回值可以直接写在箭头后

如果直接在箭头后设置对象字面量为返回值时,对象字面量必须使用()括起来

    <script>//不用写returnconst sum = (a, b) => a + bconst fn1 = (x) => x.name = "孙行者" const fn = () => ({name:"孙悟空"})//三种写法let result = sum(123, 456)result = fn()console.log(result)</script>

9、作用域

​ 作用域(scope)

  • 作用域指的是一个变量的可见区域
    • 作用域有两种:

全局作用域

  • 全局作用域在网页运行时创建,在网页关闭时消耗
  • 所有直接编写到script标签中的代码都位于全局作用域中
  • 全局作用域中的变量是全局变量,可以在任意位置访问

局部作用域

  • 块作用域
    • 块作用域是一种局部作用域
    • 块作用域在代码块执行时创建,代码块执行完毕它就销毁
    • 在块作用域中声明的变量是局部变量,只能在块内部访问,外部无法访问
<script>let a = "变量a"{let b = "变量b"{{console.log(b)}}}{console.log(b)}
</script>

10、函数作用域

函数作用域

  • 函数作用域也是一种局部作用域
  • 函数作用域在函数调用时产生,调用结束后销毁
  • 函数每次调用都会产生一个全新的函数作用域
  • 在函数中定义的变量是局部变量,只能在函数内部访问,外部无法访问
    <script>function fn(){let a = "fn中的变量a"console.log(a)}fn()console.log(a)</script>

11、作用域链

- 当我们使用一个变量时,

JS解释器会优先在当前作用域中寻找变量,就近原则

如果找到了则直接使用

如果没找到,则去上一层作用域中寻找,找到了则使用

如果没找到,则继续去上一层寻找,以此类推

如果一直到全局作用域都没找到,则报错 xxx is not defined

    <script>// let a = 10{// let a = "第一代码块中的a"{// let a = "第二代码块中的a"// console.log(a)}}let b = 33function fn(){let b = 44function f1(){let b = 55console.log(b)}f1()}fn()</script>

http://www.ppmy.cn/news/5595.html

相关文章

Lua和c语言的接口编程

Lua/c接口编程一、前言二、Lua环境搭建三、虚拟栈四、c语言调用lua的函数4.1、实现步骤4.2、完整示例代码五、Lua调用c语言的函数5.1、原理5.2、实现步骤5.3、从lua角度看调用过程5.4、完整示例代码六、C 闭包七、userdata在c语言的使用八、注册表在c语言的使用总结后言一、前言…

Springboot书城管理系统的设计与实现1mqw9计算机毕业设计

Springboot书城管理系统的设计与实现1mqw9计算机毕业设计 【免费赠送源码】Springboot书城管理系统的设计与实现1mqw9计算机毕业设计-课程设计-期末作业-毕设程序代做本源码技术栈&#xff1a; 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 开发软件&#xff…

Ui自动化概念+Web自动化测试框架介绍

目录 UI 1.UI自动化测试概念:我们先明确什么是UI 2.为什么对UI采用自动化测试? 3.什么项目适合做UI自动化测试? 4.UI自动化测试介入时机 5.UI自动化测试所属分类 Web自动化测试框架介绍 2.Selenium框架介绍及特点: Web自动化测试环境搭建 2.元素定位(一) idclassna…

python新年倒计时代码

最近老想着过年和我的一个哥哥打游戏 于是乎就敲了一个新年倒计时的代码出来 大家用的时候可以更改上面的日期&#xff0c;以后年年都可以用 话不多说&#xff0c;上代码 代码&#xff1a; import datetime import sys import time import mathspring datetime.datetime(…

ARM S5PV210 串行通信接口详解

一、串行通信接口详解 1 0. 串口的名称 S5PV210 的数据手册中串口控制器在 section8.1串口的官方名称叫&#xff1a;universal asynchronous reciver and transmitter&#xff0c;通用异步收发器 英文缩写是uart&#xff0c;中文简称串口。 1. S5PV210 的串口控制器工作原理…

【C语言】重要函数atoi的使用

目录 一、atoi函数的介绍 二、atoi函数的使用 三、atoi函数的模拟实现 一、atoi函数的介绍 一个专门将字符串转换为整数的库函数&#xff0c;具体用法如下&#xff1a; 字符串str&#xff0c;将其内容转化为整数&#xff0c;该整数作为int值返回。 二、atoi函数的使用 atoi函…

【C++】拷贝构造函数

目录 默认拷贝构造函数 拷贝构造函数的原型&#xff1a; 为什么不用值传递&#xff1f; 为什么不用指针传递&#xff1f; 调用拷贝构造函数的3种情况 (旧对象去构造新对象) 我们熟悉的类型有以下操作&#xff1a; 1.声明&#xff1a;int a; 2.声明并初始化&#xff1a;in…

必须要学习的源码--ConcurrentHashMap

并发安全的集合&#xff1f; 并发不安全的集合 在 Java 中&#xff0c;有一些集合是不安全的&#xff0c;因为它们不是线程安全的。这意味着如果多个线程同时访问这些集合&#xff0c;那么它们可能会出现不可预料的行为。 Java 中的并发不安全的集合包括&#xff1a; ArrayLi…