顶级代码不靠炫技而靠精准把握函数本质。函数声明适合公开稳定逻辑,具提升特性;函数表达式用于封装和延迟执行;箭头函数专注计算与词法this继承;组合策略应使定义方式与语义意图高度对齐。
写出顶级代码不靠炫技,靠对函数本质的准确拿捏。关键不是“用哪个”,而是“为什么用这个”——每种函数定义方式背后都有明确的运行逻辑和适用边界。
函数声明会被整体提升(hoisted),意味着你可以在定义前就调用它。这在模块初始化、工具函数集合或需要前置依赖的场景中很实用。
formatDate、isValidEmail
if (x) { function foo() {} } 是危险写法anonymous
它本质是“把函数当值来用”,变量名不会提升函数体,所以必须先定义后调用。这种可控性让它成为模块化和高阶操作的基石。
(function(){ /* 私有逻辑 */ })();
array.map(function(x){ return x * 2; })
const handler = function clickHandler(){...})它没有自己的 this、arguments、super 或 new.target,所有这些都从外层词法作用域继承。这不是缺陷,而是设计契约。
map、filter)中能天然保持外层 this
users.map(u => u.name) 比 users.map(u => { return u.name; }) 更干净=> ({ id: 1, name: 'a' }),否则大括号会被解析为函数体this 不是你以为的那个 this
顶级代码的标志之一,是函数定义方式与语义高度对齐。比如:
this