【箭头函数以及声明特点】

news2024/12/23 8:21:33

箭头函数以及声明特点

  • 1 箭头函数的声明
  • 2 箭头函数的特性
  • 3 箭头函数实践

1 箭头函数的声明

  • ES6允许使用箭头=>定义函数
	<script>
		// 声明一个函数
        // 原先
        let fn = function(a,b){
            return a + b;
        }
        // 现在
        let fn1 = (a,b) => {
            return a + b;
        }
        // 调用函数
        let result = fn1(1, 2);
        console.log(result);
	</script>

在这里插入图片描述

2 箭头函数的特性

  • 1>this是静态的,this始终指向函数声明时所在作用域下的this的值
	<script>
		function getName(){
            console.log(this.name);
        }
        let getName2 = () => {
            console.log(this.name);
        }
        // 设置window对象的name属性
        window.name = '北大';
        const SCHOOL = {
            name: 'ATBeiDa'
        }

        // 直接调用
        getName();
        getName2();
        // call方法调用
        getName.call(SCHOOL); // 普通函数this指向调用者
        getName2.call(SCHOOL); // 箭头函数this是指高父级
	</script>

在这里插入图片描述

  • 2>不能作为构造实例化对象
	<script>
		let Person = (name,age) => {
            this.name = name;
            this.age = age;
        }
        let me = new Person('xiao',30);
        console.log(me); // 会报错
	</script>

在这里插入图片描述

  • 3>不能使用arguments(作用:保存实参)变量
	<script>
		let fn = () => {
            console.log(arguments);
        }
        fn(1,2,3); // 会报错
	</script>

在这里插入图片描述

  • 4>箭头函数的简写,分两种情况
	<script>
		// 1> 省略小括号,当形参有且只有一个的时候
        /* let add = (n) => {
            return n + n;
        }
        console.log(add(9)); */
        let add = n => {
            return n + n;
        }
        console.log(add(9));
        // 2> 省略花括号,当代码体只有一条语句的时候,此时return必须省略,而且语句的执行结果就是函数的返回值
        /* let pow = (n) => {
            return n * n;
        }
        console.log(pow(9)); */
        /* let pow = (n) => n * n;
        console.log(pow(9)); */
        let pow = n => n * n;
        console.log(pow(9));
	</script>

在这里插入图片描述

3 箭头函数实践

  • 案例一:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>箭头函数实践</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background: #58a;
        }
    </style>
</head>
<body>
    <div id="ad"></div>
    <script>
        // 需求一:点击div,2s后颜色变为粉色
        // 1.获取元素
        let ad = document.getElementById('ad');
        // 2.绑定事件
        ad.addEventListener('click',function(){
            // 保存this的值
            // let that = this; // 方法一
            // let _this = this; // 方法二
            // let self = this; // 方法三
            // 因为两秒后,所以需要加一个定时器
            /* setTimeout(function(){
                // 修改背景颜色 this
                // this.style.background = 'pink'; // 此时this指向有问题,2秒后不变色 解决方法一:保存this的值(如上) 解决方法二:使用箭头函数(如下)
                // that.style.background = 'pink';
                // _this.style.background = 'pink';
                // self.style.background = 'pink';
            },2000); */
            setTimeout(() => {
                this.style.background = 'pink';
            },2000);
        })
    </script>
</body>
</html>
  • 案例二:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>箭头函数实践</title>
</head>
<body>
    <script>
        // 需求二:从数组中返回偶数的元素
        const arr = [1,6,9,10,100,25];
        // filter()函数用于过滤序列,过滤掉不符合条件的元素,接收两个参数,一个为函数,第二个为序列,每个元素作为参数传递给函数进行判断然后返回true或false,最后将返回true的元素放到新列表中
        // 方法一
        /* const result = arr.filter(function(item) {
            if(item % 2 === 0) {
                return true;
            }else {
                return false;
            }
        }); */
        // 方法二
        /* const result = arr.filter(item => {
            if(item % 2 === 0) {
                return true;
            }else {
                return false;
            }
        }); */
        // 方法三
        const result = arr.filter(item => item % 2 === 0);
        console.log(result);
    </script>
</body>
</html>

在这里插入图片描述

  • 总结:箭头函数适合与this无关的回调(如:定时器、数组的方法回调)。箭头函数不适合与this有关的回调(如:dom元素的事件回调、对象的方法)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/456239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ClickHouse中的MergeTree表引擎详解

MergeTree的特点 MySQL中最强大的表引擎是InnoDB&#xff0c;ClickHouse中最强大的表引擎是MergeTree以及该系列中的其他引擎。MergeTree 系列的引擎被设计用于插入极大量的数据到一张表当中。数据可以以数据片段的形式一个接着一个的快速写入&#xff0c;数据片段在后台按照一…

基于属性推理辅助的计算机辅助肺结核诊断

文章目录 Computer-Aided Tuberculosis Diagnosis with Attribute Reasoning Assistance摘要方法Attribute Feature RepresentationFeature Interaction 实验结果 Computer-Aided Tuberculosis Diagnosis with Attribute Reasoning Assistance 摘要 本文首先提出了一种新的大…

FE_CSS 常见布局技巧

1 巧妙运用浮动元素不会压住文字的特性 float: left; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta ht…

【LeetCode】121. 买卖股票的最佳时机

121. 买卖股票的最佳时机&#xff08;简单&#xff09; 思路 遍历数组&#xff0c;在每一个位置 i 时&#xff0c; 记录当前位置之前的最低价格&#xff0c;然后将当前价格作为售出价格&#xff0c;查看当前收益是不是最大收益即可。如果最大收益小于等于 0 &#xff0c;则返回…

【NVM】使用NVM实现不同nodejs版本的自由切换(NVM安装教程使用手册):

文章目录 一、NVM的下载二、NVM安装三、NVM使用1. 设置nvm环境2.安装nodejs3.使用或切换nodejs版本 四、建议五、nvm命令总结 一、NVM的下载 注意路径不要出现中文和空格 安装包地址&#xff1a;https://github.com/coreybutler/nvm-windows/releases 二、NVM安装 三、NVM使用…

【嵌入式笔/面试】嵌入式软件基础题和真题总结——网络相关

在学习的时候找到几个十分好的工程和个人博客&#xff0c;先码一下&#xff0c;内容都摘自其中&#xff0c;有些重难点做了补充&#xff01; 才鲸 / 嵌入式软件笔试题汇总 嵌入式与Linux那些事 阿秀的学习笔记 小林coding 百问网linux 嵌入式软件面试合集 2022年春招实习十四面…

Springcloud快速复习--注册中心

按照个人的习性,分布式我学习完以后一定会忘为此写次笔记自己快速复习 目录 Springcloud介绍注册中心–Eureka注册中心–Nacos Springcloud介绍及微服务介绍 为什么学? 也不是以前的单体架构被淘汰而是,当业务足够大型,进行优化 单体架构&#xff1a;将业务的所有功能集中在…

数据分析之Numpy

文章目录 1. Anaconda安装2. juypter3. numpy简介4. numpy数组4.1 ndarray对象4.2 array创建数组4.3 arange区间数组4.4 linspace等差数列4.5 logspace等比数列4.6 numpy.empty4.7 numpy.zeros4.8 numpy.ones4.9 numpy.zeros_like4.10 numpy.ones_like4.11 numpy.asarray4.12 n…

汉诺塔的非递归算法

对于汉诺塔问题&#xff0c;我们都普遍认为这个是一个典型的递归问题&#xff0c;然而递归需要使用到系统对应的栈&#xff0c;开销比较大&#xff0c;因此我在想使用非递归算法来解决它&#xff0c;然而网上绝大部分的教程都是自己模拟了一个栈&#xff0c;因此我在考虑写一篇…

【C++初阶】:内联函数

内联函数 一.宏函数二.内联函数三,是否成为内联函数四.内联函数的跨文件使用 一.宏函数 在c语言中&#xff0c;如果一个函数较短并且会被重复使用&#xff0c;那么我们就可以把该函数换成一个宏函数。 贴个小知识&#xff0c;宏函数有许多的坑也是面试官喜欢考的点&#xff0c;…

如何使用美颜SDK制作美妆相机?美颜SDK代码分析

随着时代的发展&#xff0c;人们对于自己的外貌要求越来越高&#xff0c;因此美颜相机、美妆相机等软件也逐渐兴起。其中&#xff0c;美妆相机是一种可以实现“快速上妆效果”的美颜工具&#xff0c;而美颜SDK则是实现美妆相机的核心技术之一。本文将介绍如何使用美颜SDK制作美…

你怎么看 App响应时间优化这事?

作者&#xff1a;xuexiangjys 响应时间&#xff0c;它是用来衡量系统运行效率的一个重要指标。评价一个应用的响应时间&#xff0c;可以从用户感知和系统性能这两个角度来考量。 响应时间的长短&#xff0c;可能影响用户对某个功能、某个应用、乃至某个系统的使用。毕竟如果有选…

VS2022配置OpenGL+GLAD

Glew&#xff08;The OpenGL Extension Wrangler Library&#xff09;是对底层OpenGL接口的封装&#xff0c;可以让你的代码跨平台。Glad与Glew作用相同&#xff0c;可以看作它的升级版。 Freeglut&#xff08;OpenGL Utility Toolkit&#xff09;主要用于创建并管理窗口和Ope…

Windows逆向安全(一)之基础知识(十五)

指针二 先前介绍了指针的一些基本的知识&#xff0c;但都没有提到地址的概念&#xff0c;下面承接之前的笔记&#xff0c;继续学习指针 下面要介绍三个相关的内容&#xff1a;获取变量的数据类型 、 取变量地址和取地址中存储的数据 获取变量的数据类型 在C语言中可以使用下…

Sleep:预测认知能力的最佳纺锤波检测参数

导读 目的&#xff1a;睡眠纺锤波的改变与认知障碍有关。这一发现增加了人们对识别基于睡眠的认知和神经退行性疾病生物标志物(包括睡眠纺锤波)的兴趣。然而&#xff0c;围绕纺锤波定义和算法参数设置的灵活性带来了方法上的挑战。本研究的目的是描述纺锤波检测参数设置如何影…

Dynamic Slicing for Deep Neural Networks

0、摘要 程序切片已广泛应用于各种软件工程任务中。然而&#xff0c;现有的程序切片技术只能处理由指令和变量构建的传统程序&#xff0c;而不能处理由神经元和突触组成的神经网络。在本文中&#xff0c;我们提出了 NNSlicer&#xff0c;这是第一种基于数据流分析的深度神经网络…

android studio shape形状图形

1.创建shape 2定义椭圆 <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"android:shape"oval"><!--指定形状椭圆--><!--指定形状内部颜色--><…

Ubuntu与window实现文件共享——Samba使用

前言 &#xff08;1&#xff09;我们在使用Linux开发的时候&#xff0c;因为Linux中写程序没有Windows的工具方便&#xff0c;所以经常是先在windows环境下编写程序&#xff0c;之后再将文件上传给Linux进行编译。 &#xff08;2&#xff09;这样就存在一个问题&#xff0c;因为…

vue使用Howler实现音乐播放器

vue使用Howler实现音乐播放器 前言一、引入依赖二、封装组件 前言 本文使用Howler.js进行播放。使用siriwave做的播放动画具体文档地址如下 名称地址Howlerhttps://howlerjs.com/siriwavehttps://github.com/kopiro/siriwave 最后实现效果如下&#xff1a; 实现暂停、开始、…

教你如何根据需求编写测试用例,不用写一行代码,使用ChatGPT4自动完成。

首先来张效果图&#xff0c;需求我是放到requirements.txt文档里&#xff0c;输出的测试用例是放到test_case1.txt&#xff0c;整个代码我是让ChatGPT4自动给我写的。 我用的prompt提示语是&#xff1a; 我的想法是这样&#xff0c;通过Python代码&#xff0c;和API keys来实现…