javascript高级程序设计阅读收获(10.2)——函数名

1.一个函数可以有多个函数名

function sum(num1, num2){
	return num1 + num2;
}

console.log(sum(10,10));//20

let anotherSum = sum;
console.log(anotherSum(10,10));//20

sum = null;
console.log(anotherSum(10,10));//20
  1. 使用不带括号的函数名会访问函数指针,而不会执行函数。
  2. anotherSum和sum都指向同一个函数。
  3. 把sum设置为null之后,就切断了它和函数之间的关联,而anotherSum可以正常调用没有问题。

2.获取函数的名字

function foo(){};
let bar = function(){};
let baz = ()=>{};

console.log(foo.name);//foo
console.log(bar.name);//bar
console.log(baz.name);//baz
console.log((()=>{}).name);//""
console.log((new Function()).name);//anonymous
  1. ECMAScript6的多有函数对象都会暴露一个只读的name属性,其中包含关于函数的信息。
  2. 多数情况下,这个属性中保存的就是一个函数标识符,或者说是一个字符串化的变量名。
  3. 及时函数没有名称,也会如实的显示成空字符串。
  4. 如果它是使用Function构造函数创建的,则会标识成"anonymous"。
function foo(){}
console.log(foo.bind(null).name);//bound foo

let dog = {
	years:1,
	get age(){
		return this.years;
	},
	set age(newAge){
		this.years = newAge;
	}
}

let propertyDescriptor = Object.getOwnPropertyDescriptor(dog,'age');
console.log(propertyDescriptor.get.name);//get name
console.log(propertyDescriptor.set.name);//set name
  1. 如果函数是一个获取函数、设置函数,或者使用bind()实例化,那么标识符前面会加上一个前缀。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子 旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值