函数 is 对象
js
typeof (() => {}); // 'function'
(() => {}) instanceof Object; // truejs 并没有 function 这种类型。
function 的本质是 object。
name
js
function sayHi() {
alert("Hi");
}
sayHi.name; // sayHi方法
js
let user = {
sayHi() {},
};
user.sayHi.name; // sayHi匿名函数
js
(function () {}).name; // ''length
入参 的数量
js
function f2(a, b) {}
f2.length; // 2
function f3(a, b, ...more) {}
f3.length; // 2 !!!需要注意!rest params 并不计算在其中!!!
而且这只是函数的定义,并非运行时的实际情况!
例:代替闭包
js
function makeCounter() {
// 不需要这个了
// let count = 0
function counter() {
return counter.count++;
}
counter.count = 0;
return counter;
}闭包的作用域仅自己可用。
这个拥有 对象索引 就可以修改。
NFE / Named Function Expression / 命名函数表达式
也就是主动命名
js
const func = function 大王叫我来巡山() {};
console.log(func.name); // 大王叫我来巡山