JavaScript函数需据场景选声明/表达式/箭头函数:声明可提升,表达式适合传参和模块导出,箭头函数无this和arguments、不可new,慎用于对象方法和事件处理器;参数不校验个数,缺参得undefined,忘return致链式调用中断。

JavaScript 函数定义和调用没有统一“必须怎么写”的模板,关键看你要解决什么问题:是封装一段逻辑?要传参计算?还是需要异步等待?选错方式会导致 undefined、ReferenceError 或函数不执行。
函数声明 vs 函数表达式:调用时机决定写法
函数声明(function foo() {})会被提升(hoisted),可以在定义前调用;函数表达式(const foo = function() {})不会提升,必须先定义再调用。
- 如果在
顶部就写foo(),只能用函数声明 - 如果函数要作为参数传给
setTimeout或addEventListener,推荐函数表达式或箭头函数,避免命名污染 - 类方法、模块导出、回调场景中,函数表达式更常见,因为可赋值给变量或属性
箭头函数不能替代所有场景:this 和 arguments 是坑
箭头函数没有自己的 this、arguments,也不支持 new。误用会导致对象方法内 this 指向错误,或无法访问实参列表。
- 对象方法不要写成
obj.method = () => { console.log(this) },这里this指向外层作用域,不是obj - 需要动态
this的事件处理器(如button.addEventListener('click', this.handleClick))慎用箭头函数 - 要兼容老旧环境(如 IE11),不能用箭头函数——它不被支持
调用时传参和返回值:别忽略隐式转换和 undefined
JavaScript 不校验参数个数,少传、多传都不会报错,但可能引发意外行为。
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
立即学习“Java免费学习笔记(深入)”;
- 函数内访问未传的形参,值是
undefined,不是报错——常需用param ?? 'default'或param !== undefined判断 - 调用时传入对象或数组,是传引用,函数内修改会影响原值;传原始类型(
string、number)则是拷贝值 - 忘记写
return,函数默认返回undefined,链式调用会中断(如arr.map(...).filter(...)中 map 没 return 就全变undefined)
function add(a, b) {
return a + b;
}
const result = add(2, 3); // result 是 5
const square = (x) => x * x;
console.log(square(4)); // 输出 16
// 错误示例:this 失效
const obj = {
value: 10,
normalFunc: function() { return this.value; },
arrowFunc: () => this.value // 这里 this 不指向 obj
};
obj.normalFunc(); // 10
obj.arrowFunc(); // undefined(非严格模式下可能是 globalThis)
真正容易出问题的不是语法本身,而是函数定义位置、this 绑定时机、参数是否可选这些上下文细节。写完函数后,不妨立刻在控制台手动调用一次,带各种边界参数试一遍。










