vue中箭头函数和普通函数的区分(同时和java做对比)

目录

定义和使用

首先要在脑子里划分

1.定义时

2.使用时

this的不同

script

箭头函数:定义时确定,不变

普通函数:使用时确定,改变

比如定时器,最后是windows调用的,写普通函数就会读取不到一些内部参数

例子:

javascript 复制代码
var name = '张三';
var person = {
        name:'李四',           
        age:18,
        fav:function(){
            console.log(this)
            console.log(this.name)
        }
    }
person.fav();
// this      为 person
// this.name为 "李四"
//person.fav(); 是person使用所以this为person
javascript 复制代码
var name = '张三';
var person = {
    name:'李四',
    age:18,
    fav: ()=>{
            console.log(this)
            console.log(this.name)
      }
    }
person.fav();
// this      为 Window
// this.name 为 "张三"
// person.fav(); 是person使用,但是箭头函数以定义为准,定义时fav在一个集合中,这个集合属于window所以this为window

看上面例子时请划分为使用和定义两个阶段

java

js中箭头函数和java中lambda表达式有些像

lambda表达式: 和箭头函数类似

普通函数: java中谁定义,就是谁的this,所以一般不会变化

VUE中箭头函数和普通函数的用处

箭头函数和普通函数一般在函数里面有函数,也就是函数返回值作为参数的时候/区别很大

函数(外函数)中有函数(内函数),内函数想访问外函数所在this的参数,使用普通函数是不行的

如下

javascript 复制代码
const vm = new Vue({
	el:"#root"
	data:{
		a:1
	},
	method:{
		Test01(){
		//这里的this为vm
			Test02(){
				//是Test01调用了Test02,所以这里访问不了this.a
			}
			//-------------分割线----------------
			()=>{
				//不用管谁调用了,定义的地方在vm,这里可以访问this.a
			}
		}
	}
})

上面这样写肯定不行,只是便于理解,如果下函数放到定时器里呢。

javascript 复制代码
const vm = new Vue({
	el:"#root"
	data:{
		a:1
	},
	method:{
		Test01(){
			setInterval(()=>{
				()=>{
					//这里可以访问this.a
					//如果你无需访问this.a就可以换为普通函数
				},
				16
			})
		}
	}
})

由于定时器是window调用,所以想要this指向vm,只能使用箭头函数,在定义时决定好this

和Java类部类的区别

JavaScript中的内部函数无法直接访问外部函数的局部变量,而Java中的内部类可以访问外部类的成员。

JavaScript中的内部函数通过闭包可以间接访问外部函数的局部变量,而Java中的内部类可以直接访问外部类的成员。

相关推荐
计算机毕设定制辅导-无忧学长1 小时前
《基于微信小程序健康习惯激励系统设计与实现》
java·spring boot·mysql·微信小程序·uniapp·健康习惯激励系统
掘金者阿豪1 小时前
SQL Server数据迁移完成后,凌晨的数据库告警该怎么查?
前端·后端
小郎君6581 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
JudithHuang1 小时前
React 嵌套路由与布局
前端·react.js·arcgis·react·react router
htzyl2062 小时前
前端阶梯——第四十三章、实战二:待办清单To-Do
前端·javascript·html
yilaisai2 小时前
前端开发遇到的一些细节问题整理
vue.js
雪芽蓝域zzs2 小时前
第 1 章:IDEA 创建 SpringBoot3.5.16 Maven 项目
java·maven·intellij-idea
golang学习记2 小时前
IDEA 开始换芯,发布全新AI版终端
java·人工智能·intellij-idea
vipxieliang2 小时前
ValidX 正则表达式预编译优化:Pattern 复用策略
java·spring boot·后端