通过vue.js 学习来总结es6语法中的箭头函数,箭头函数原理分析。

PR控制以及使用PR控制用于单相离/并网逆变器 最近想学习一下并网逆变器,需要用到PR控制,全网找遍了许多学习资料,终于掌握的差不多了,在此做个记录,以及个人对PR(Proportional Resonant)控制的理解。在去年7月准备电赛的时候偶然看到有几篇讲解数字滤波器,第一次接触传递函数离散化,深刻被数字时代的数字方式折服,改改代码,就可以实现不同的截至频率,甚至不同阶数,而模拟方式还要改元器件。当时就感觉这玩意太他妈牛逼了,很想学懂它,奈何学不会呀。后面全身心做电赛,就忘了这事儿。直至最近学习PR控制,当初的感觉又回来了,一股劲儿吃下来了。 阅读详情

首先我们来学习一下大神对箭头函数的剖析:

----------------------------------------------横线部分来自廖雪峰大神的官方网站------------------------------------------------------------------------------

ES6标准新增了一种新的函数:Arrow Function(箭头函数)。

为什么叫Arrow Function?因为它的定义用的就是一个箭头:

x => x * x

上面的箭头函数相当于:

function (x) {
    return x * x;
}

 

箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种像上面的,只包含一个表达式,连{ ... }和return都省略掉了。还有一种可以包含多条语句,这时候就不能省略{ ... }和return:

x => {
    if (x > 0) {
        return x * x;
    }
    else {
        return - x * x;
    }
}

如果参数不是一个,就需要用括号()括起来:

// 两个参数:
(x, y) => x * x + y * y

// 无参数:
() => 3.14

// 可变参数:
(x, y, ...rest) => {
    var i, sum = x + y;
    for (i=0; i<rest.length; i++) {
        sum += rest[i];
    }
    return sum;
}

如果要返回一个对象,就要注意,如果是单表达式,这么写的话会报错:

// SyntaxError:
x => { foo: x }

因为和函数体的{ ... }有语法冲突,所以要改为:

// ok:
x => ({ foo: x })

this    —— 笔者认为this是重点需要关注的学习目标

箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确定。

回顾前面的例子,由于JavaScript函数对this绑定的错误处理,下面的例子无法得到预期结果:

var obj = {
    birth: 1990,
    getAge: function () {
        var b = this.birth; // 1990
        var fn = function () {
            return new Date().getFullYear() - this.birth; // this指向window或undefined
        };
        return fn();
    }
};

现在,箭头函数完全修复了this的指向,this总是指向词法作用域,也就是外层调用者obj:

var obj = {
    birth: 1990,
    getAge: function () {
        var b = this.birth; // 1990
        var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象
        return fn();
    }
};
obj.getAge(); // 25

如果使用箭头函数,以前的那种hack写法:

var that = this;

就不再需要了。

由于this在箭头函数中已经按照词法作用域绑定了,所以,用call()或者apply()调用箭头函数时,无法对this进行绑定,即传入的第一个参数被忽略:

var obj = {
    birth: 1990,
    getAge: function (year) {
        var b = this.birth; // 1990
        var fn = (y) => y - this.birth; // this.birth仍是1990
        return fn.call({birth:2000}, year);
    }
};
obj.getAge(2015); // 25

 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------

接下来笔者通过vue代码进行分析:

<!doctype html>
<html lang="en">
	<head>
		<meta charset="utf-8">
		<title>vue test </title>
		<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
	</head>
	<body>
		<div id="root">
			<div v-on:click="handleClick">{{msg}}</div>
		</div>

		<script>
			new Vue({
				el:"#root",
				data: {
					msg: "hello world"
				},
				methods: {
					//写法一:(正确写法)
					// handleClick: function(){
					// 	this.msg = "111"
					// 	console.log(this)  //this指向vue实例
					// 	alert(this)

					// 	var fn = ()=>{
					// 		this.msg ="222"
					// 		console.log(this)  //箭头函数中this仍然指向vue实例
					// 	}
					// 	return fn(); 
					// 	
					// }
					

					//写法二:
					// handleClick: function(){
					// 	this.msg = "111"
					// 	console.log(this)  //this指向vue实例
					// 	alert(this)

					// 	var fn = function(){
					// 		this.msg ="222"
					// 		console.log(this)  //this指向window
					// 	}
					// 	return fn(); 
					// }
					//因此写法二正确的应该改为:
					handleClick: function(){
						var _this = this  
						this.msg = "111"
						console.log(this)  //this指向vue实例
						alert(this)

						var fn = function(){
							_this.msg ="222"
							console.log(_this)  //_this仍然指向vue实例
						}
						return fn(); 
					}
					
					
					//写法三:(错误写法)
					// handleClick: ()=>{
					// 	console.log(this)   //this指向window (所以一般不在最外层直接用箭头函数)
					// }

					//---总结---
					//箭头函数一般用于函数嵌套时,防止this指向变化,在箭头函数
					//中this的指向一直是外层对象,即廖雪峰大神说的“箭头函数完全
					//修复了this的指向,this总是指向词法作用域,也就是外层调用者obj”
				}
			})
		</script>

	</body>
</html>

可以自行测试,对比调试输出结果。

ros2的unity仿真配置(ros2-for-unity) 可以看到unity中输出了Hello World,验证完毕!可以看到unity上监听的/chatter。 阅读详情

相关推荐

保姆级教程:STK 11.0 从下载到安装成功(附Matlab互联配置与常见问题解决)

本文提供STK 11.0的完整安装指南,包括下载、安装步骤、Matlab互联配置及常见问题解决方案。详细介绍了系统要求核查、分步安装流程、关键文件替换和许可证配置,确保用户能够顺利完成STK 11.0的部署并实现与Matlab的无缝对接。

weixin_30698297的博客 345

vue的学习笔记(12)之箭头函数

箭头函数1、箭头函数的使用2、箭头函数参数和返回值3、箭头函数中的this 1、箭头函数的使用 定义函数有三种方式: <script> //箭头函数:也是一种定义函数的方式 //1.定义函数的方式:function const aaa=function () { } //2.对象字面量中定义函数 const obj={ bbb: function () { }, ccc() { } } //3.es6中的箭头函数 // const ddd=(参

肿肿的博客 6994

HWDB1.1数据集处理全攻略:从gnt文件到PNG图片的完整转换教程

本文提供了HWDB1.1数据集处理的完整教程,详细解析了gnt二进制文件格式,并给出了从文件解析、标签映射到批量转换为PNG图片的Python脚本。教程涵盖了环境准备、跨平台解压方案,以及为PyTorch等深度学习框架准备数据的最佳实践,是进行手写汉字识别研究不可或缺的实用指南。

2w3e4r5t6y的博客 632

js---遍历的4种方法 & 箭头函数=>

常规遍历方法 for i forEach 箭头函数=> for of 遍历 for in 遍历 for in 遍历的 是 数组下表 ,适合 遍历集合 箭头函数=> ES6标准新增了一种新的函数:Arrow Function(箭头函数) 基础语法 var fn1 = function(a, b) { return a + b } function fn2(a, b) { return a + b } 使用ES6箭头函数语法定义函数,将原函数的“func

时光里的博客 8452

Multisim仿真入门:单相半波可控整流电路从搭建到波形分析(附避坑指南)

本文为电力电子技术初学者提供了一份详细的Multisim仿真指南,手把手教你从零搭建单相半波可控整流电路。通过对比纯电阻、阻感负载及加入续流二极管后的波形变化,直观理解晶闸管触发、电感续流等核心原理,并附有实用的参数设置与常见问题避坑指南,帮助你将抽象理论转化为可视化的工程实践。

weixin_29208077的博客 343

深入解析HAL_UART_Receive_IT:如何高效配置串口中断接收

本文深入解析了STM32 HAL库中`HAL_UART_Receive_IT`函数的工作原理与高效配置方法。该函数并非直接接收数据,而是作为中断接收的启动器和配置器,通过开启相关中断,由`UART_Receive_IT`在后台完成数据搬运。文章详细对比了中断与轮询模式的区别,并提供了不定长数据接收的完整实战流程、常见问题避坑指南及高级应用技巧,帮助开发者构建稳定高效的串口通信。

weixin_29162439的博客 640

vue学习之箭头函数

箭头函数的学习

HRSR1314的博客 2120

【STM32】基于STM32F103C8T6实现步进电机精准调速控制

本文详细介绍了如何使用STM32F103C8T6微控制器实现步进电机的精准调速控制。通过利用其内置定时器生成PWM脉冲,替代低效的延时方法,并结合TB6600驱动器进行硬件连接,可实现平滑、高效的电机速度控制。文章提供了基于HAL库的代码实战,包括速度与方向设置函数,并探讨了加减速规划等高级应用,帮助开发者彻底掌握步进电机驱动技术。

weixin_29169899的博客 486

JavaScript的箭头函数是干什么的?底层原理是什么?

没有自己的this和arguments:箭头函数没有自己的this值,它继承自外围作用域的this值。这意味着在箭头函数内部,this的值由函数定义的位置决定,而不是函数调用的方式。闭包的特性:由于箭头函数继承了外围作用域的this值,它可以轻松地访问外围作用域的变量和函数,形成闭包。简洁的语法:箭头函数使用箭头(=>)来定义函数,可以省略function关键字和大括号,减少了冗余的代码,使函数表达更加简洁。适用于简单的回调函数:箭头函数特别适合用作回调函数,可以更清晰地表达代码意图,减少冗余的语法。

长风破浪会有时的博客 728

如何导入su_利用GIS快速生成SU场地模型

01|前言:进入2021年了,希望大家也是一个新的开始。告诫自己多写文章多更新,多读点书多旅行。然而元旦由于出去玩了4天,积累了一些事情要处理,一直没有时间好好写点东西。今天给大家带来的分享主题叫“利用GIS快速生成SU场地模型”。相关的视频方法其实B站上也有,但我相信视频很多人都不会看,我自己也是。直接给大家上操作流程。主要的操作步骤是【获取场地的矢量shp文件】—【导入ArcScen...

weixin_33806859的博客 9813

PyTorch GPU版本安装避坑指南:解决RuntimeError: No CUDA GPUs are available报错

本文详细解析了PyTorch GPU版本安装过程中常见的`RuntimeError: No CUDA GPUs are available`报错问题,从硬件驱动检查、CUDA Toolkit与cuDNN安装到PyTorch GPU版本的正确配置,提供了全面的避坑指南和实战验证方法,帮助开发者高效搭建深度学习开发环境。

r2s3t4的博客 298

箭头函数详解

箭头函数详解

博哥的二进制世界 3591

Jetson Thor平台JP7.0版本96712 GMSL相机驱动调试记录

摘要:本文档记录了在Thor Custom Board (JP7.0GA)上配置GMSL摄像头时遇到的视频流问题及调试过程。问题表现为视频设备(/dev/video11)能正常创建,但获取视频时出现"Internal data stream error",而相同配置在AGX Orin JP6.0上运行正常。通过梳理硬件拓扑、v4l2-ctl测试、提升时钟频率及分析内核日志,发现VI引擎未接收到帧数据包。调试步骤包括检查设备树冲突、调整I2C总线配置、修正通道名称,最终通过屏蔽传感器启动时

jzwjzw19900922的博客 1112

前端常见知识点汇总(ES6,Vue,axios,Node.js,npm,webpack)

一、ES6 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 1.1 ECMAScript 和 JavaScript 的关系: 一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JavaScript ES6 10语法 在Vue中的实战

JavaScript ES6-10指的是从ES6(ECMAScript 2015)到ES10(ECMAScript 2019)之间的版本。这些版本引入了许多新的语法特性和功能,如箭头函数、解构赋值、模板字符串、类、模块化支持等。它们不仅简化了代码编写,还提高了代码的可读性和性能。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 768

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

JavaScript-ES6语法

ECMAScript 6,简称ES6,是JavaScript语言的一次重大更新。它于2015年发布,是原来的ECMAScript标准的第六个版本。ES6带来了大量的新特性,包括箭头函数、模板字符串、let和const关键字、解构、默认参数值、模块系统等等,大大提升了JavaScript的开发体验。由于VUE3中大量使用了ES6的语法,所以ES6成为了学习VUE3的门槛之一更加简洁:ES6引入了一些新的语法,如箭头函数、类和模板字符串等,使代码更加简洁易懂。

weixin_44201223的博客 5011

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ES6-learning:如何快速掌握JavaScript ES6新语法

ES6-learning是一个专注于《深入理解ES6》教程的学习笔记项目,旨在帮助开发者系统掌握JavaScript ES6新语法。通过本项目提供的详细笔记和示例,你将能够快速理解并应用ES6的核心特性,提升JavaScript编程技能。 ## 为什么学习ES6至关重要? ES6(ECMAScript 2015)是JavaScript语言的一次重大更新,引入了许多现代化的语法特性和功能改进。掌

gitblog_00789的博客 1104

Vue基础知识

Vue基础知识

qq_47433906的博客 2545

这一次,彻底搞懂箭头函数

一、箭头函数的特点 1. 相比普通函数,箭头函数有更加简洁的语法。 普通函数 function add(num) { return num + 10 } 箭头函数 const add = num => num + 10; 2. 箭头函数不绑定this,会捕获其所在上下文的this,作为自己的this。 这句话需要注意的是,箭头函数的外层如果有普通函数,那么箭头函数的this就是这个外层的普通函数的this,箭头函数的外层如果没有普通函数,那么箭头函数的this就是全局变量。 下面

Always-Learning 2万+

Vue中方法名:function() {} 和 方法名() {}区别

方法名:function() {} 和 方法名() {}区别

weixin_45687036的博客 1033

Vue 箭头函数

箭头函数 1.1 认识箭头函数 传统定义函数: const aaa = function(parse) { } 对象字面量中定义函数: const obj = { bbb(parse) { } } Es6中箭头函数; const ccc = ()=>{ } 箭头函数的参数和返回值 参数问题: 放入两个参数: const obj = (num1, num2) => { retu...

weixin_44289916的博客 1386

箭头函数总结、promise原理方法

rest参数:…rest(重点是…)可以获取剩余参数rest参数必须是最后一个形参!!!! 箭头函数this指向的总结: 全局使用this就是window 定时器中使用(window) 以下改变了this指向 事件中使用——指向事件源 对象中使用—— 对象方法不能使用箭头函数(对象中使用箭头函数本来this应该指向对象,但是指向的window,会提升作用域) 只有对象方法调用,作用域内的this才指向对象 let obj ={ name:’张三’, myThis:this} 以上的this

m0_59592734的博客 818

ES6基础--箭头函数详解

ES6中新增的箭头函数是什么,跟普通函数相比有什么不同

zxn200125的博客 985

Vue基础语法

##Vue的基础语法及一些底层原理 0. vue.js源代码 匿名函数 (function(){}) () 特点 安全性高 减少了函数命名冲突 第二个括号才是函数的真正运行, 里面可以传入实际参数 第一个括号确定了匿名函数的作用范围, 语法不会报错, 里面放一个没有名字的函数, 函数可以接收形式参数 底层代码封装 匿名函数作用 确定vue.js这个库的使用方法 直接将V...

lllllllwj的博客 400

Vue 3 之 语法糖,箭头函数、函数声明

是两种基本的响应式引用类型,它们是组合式 API 的核心部分。相较于箭头函数,命名函数有明确的名称,更利于调试和递归调用,并且自然绑定。在 Vue 3 中,箭头函数被广泛支持,尤其是在组合式 API 的上下文中。箭头函数提供了一个更简洁的函数书写方式,并且不绑定自己的。但是,需要注意的是,在 Vue 的选项式 API 中,特别是在。标签,Vue 3 提供了一种更声明式的组件写法,极大简化了代码结构。如果你需要管理一个较大的数据结构,如对象或数组,和生命周期钩子中,通常不推荐使用箭头函数,因为这些地方的。

HaSaKing的博客 5225

JavaScript的箭头函数到底是干什么的?使用场景是什么?底层原理是什么?

箭头函数是 ES6 引入的一种新的函数定义方式,具有语法简洁、词法this绑定和隐式返回的特点。箭头函数在回调函数、事件处理、立即执行函数和对象方法等场景中非常有用。理解箭头函数的底层原理和使用场景,可以帮助开发者编写更简洁、更可靠的代码。

长风破浪会有时的博客 1469
上一篇: editor.md 常用参数配置和使用方法
下一篇: vscode 快捷键 自定义快捷键 宏的使用
acoolgiser
博客等级 码龄11年 179粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值