javascript函数如何定义和调用?【教程】

10次阅读

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

javascript函数如何定义和调用?【教程】

javascript 函数定义和调用没有统一“必须怎么写”的模板,关键看你要解决什么问题:是封装一段逻辑?要传参计算?还是需要异步等待?选错方式会导致 undefinedReferenceError 或函数不执行。

函数声明 vs 函数表达式:调用时机决定写法

函数声明(function foo() {})会被提升(hoisted),可以在定义前调用;函数表达式(const foo = function() {})不会提升,必须先定义再调用。

  • 如果在 顶部就写 foo(),只能用函数声明
  • 如果函数要作为参数传给 setTimeoutaddEventListener,推荐函数表达式或箭头函数,避免命名污染
  • 类方法、模块导出、回调场景中,函数表达式更常见,因为可赋值给变量或属性

箭头函数不能替代所有场景:this 和 arguments 是坑

箭头函数没有自己的 thisarguments,也不支持 new。误用会导致对象方法内 this 指向错误,或无法访问实参列表。

  • 对象方法不要写成 obj.method = () => { console.log(this) },这里 this 指向外层作用域,不是 obj
  • 需要动态 this 的事件处理器(如 button.addEventListener('click', this.handleClick))慎用箭头函数
  • 要兼容老旧环境(如 IE11),不能用箭头函数——它不被支持

调用时传参和返回值:别忽略隐式转换和 undefined

JavaScript 不校验参数个数,少传、多传都不会报错,但可能引发意外行为。

立即学习Java免费学习笔记(深入)”;

  • 函数内访问未传的形参,值是 undefined,不是报错——常需用 param ?? 'default'param !== undefined 判断
  • 调用时传入对象或数组,是传引用,函数内修改会影响原值;传原始类型(Stringnumber)则是拷贝值
  • 忘记写 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 绑定时机、参数是否可选这些上下文细节。写完函数后,不妨立刻在控制台手动调用一次,带各种边界参数试一遍。

text=ZqhQzanResources