JavaScript进阶-函数进阶


函数进阶

函数提升

与变量提升类似,是指函数在声明之前即可被调用

  • 函数提升能够使函数的声明调用更灵活
  • 函数表达式不存在提升现象
  • 函数提升出现在相同作用域当中

例如:

fn()
function fn() {
	console.log('函数提升')
}

函数参数

动态参数

arguments是函数内部内置的伪数组变量,它包含了调用函数时传入的所有实参
例如:

function getSum() {
	let sum = 0
	for (let i = 0; i < arguments.length; i++) {
		sum += arguments[i]
	}
	console.log(sum)
}
getSum(1,2,3)
getSum(2,3,4,5,6,7)

剩余参数

剩余参数允许将一个不定数量的参数表示为一个数组
语法:function fn(first, ...last) {}

  • …是语法符号,置于最末函数形参之前,用于获取多余的实参
  • 借助…获取的剩余实参,是个真数组
  • 开发中,还是提倡多使用剩余参数

例如:
解构时可以使用剩余属性结束解构模式。
此模式会将对象或数组的所有剩余属性存储到新的对象或数组中。
剩余属性必须是模式中的最后一个,并且不能有尾随逗号。

const { a, ...others } = { a: 1, b: 2, c: 3 };
console.log(others); // { b: 2, c: 3 }

const [first, ...others2] = [1, 2, 3];
console.log(others2); // [2, 3]

拓展-展开运算符

展开运算符(…)将一个数组进行展开
不会修改数组
例如:

const arr = [1,2,3,4,6,]
console.log(...arr)

箭头函数

使用场景:箭头函数更适用于那些本来需要匿名函数的地方

基本语法

  • 语法1:基本写法
//普通函数
const fn = function() {
	console.log('普通函数')
}
//箭头函数
const fn = () => {
	console.log('箭头函数')
}
  • 语法2:只有一个参数可以省略小括号
//普通函数
const fn = function(x) {
	return x + x
}
//箭头函数
const fn = x => {
	return x + x
} 
  • 语法3:如果函数体只有一行代码,可以写到一行上,并且无需写return直接返回值
//普通函数
const fn = function(x,y) {
	return x + y
}
//箭头函数
const fn = (x,y) => x + y
  • 语法4:加括号的函数体返回对象字面量表达式
const fn = uname => ({uname:uname})
//第二个uname为属性名,第三个uname为属性值

箭头函数参数

箭头函数没有动态参数,但是有剩余参数
例如:

const getSum = (...args) => {
	let sum = 0
	for (let i = 0; i < args.length; i++) {
		sum += args[i]
	}
	return sum
}

箭头函数this

箭头函数不会创建自己的this,它只会从自己的作用域链的上一层沿用this
例如:

const fn = () => {
	console.log(this)
	//this指向window
}
fn()
//对象方法 箭头函数的this
const obj = {
	uname:'jinaglin'
	sayHi:() => {
		console.log(this)
		//this指向window,因为window调用了obj中的sayHi方法
	}
obj.sayHi()

const obj = {
	uname:'jinaglin'
	sayHi:function() => {
		console.log(this)
		//this指向obj
		let i = 10
		const count = () => {
			console.log(this)
			//this指向obj
		}
		count()
	}
}
obj.sayHi()

在开发中使用箭头函数前需要考虑函数中的this的值,事件回调函数使用箭头函数时,this为全局的window,因此DOM事件回调函数为了简便,不推荐使用箭头函数

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值