核心内容摘要
X7X7X7X7X7任意槽:解锁无限可能,尽享数字自由
目录1 函数的深入理解
1 函数的返回值return
1.
1 基本语法
1.
2 使用要点
1.
3 返回值类型
1.
4 流程控制对比
2 arguments 对象
1.
1 特性
1.
2 应用场景
1.
3 arguments.callee
3 函数方法对比
1.
1 传参方式
1.
2 this 指向规则
4 函数嵌套调用
5 立即执行函数(IIFE)
1.
1 特点
1.
2 实现方式
1.
3 参数传递2 数据存储机制
1 数据类型比较
2 原型系统1 函数的深入理解
1 函数的返回值return
1.
1 基本语法function functionName() { return resultValue; } functionName();
1.
2 使用要点函数执行后通过return将结果返回给调用者函数调用表达式functionName()的值即为return后的值可通过变量接收返回值var result fn();return会立即终止函数执行只能返回单个值如需返回多个值可使用数组或对象可返回任意数据类型无返回值的return等价于返回undefined函数若未显式使用return默认返回undefined
1.
3 返回值类型基本类型引用类型对象/数组函数
1.
4 流程控制对比break终止当前循环continue跳过本次循环return终止整个函数并返回值 示例求两数最大值function getMax(a, b) { return a b ? a : b; }
2 arguments 对象函数调用时自动接收的两个隐式参数上下文对象this实参集合arguments
1.
1 特性类数组对象具有length属性支持索引访问无数组方法
1.
2 应用场景存储所有传入实参即使未定义形参也能获取实参arguments[0]; // 首参数 arguments[1]; // 次参数
1.
3 arguments.callee引用当前执行函数了解即可 示例1求任意个数最大值function getMax() { let max arguments[0]; for (let i 1; i arguments.length; i) { if (arguments[i] max) max arguments[i]; } return max; } 示例2闰年判断function isLeapYear(year) { return (year % 4 0 year % 100 !
|| year % 400 0; } 面试要点伪数组与真数组的区别常见伪数组获取方式argumentsDOM集合如getElementsByTagName
3 函数方法对比 核心区别三者均可改变函数this指向call()/apply()立即执行bind()返回新函数
1.
1 传参方式call(thisObj, arg1, arg
apply(thisObj, [args])bind(thisObj, arg1, arg
2)
1.
2 this 指向规则普通调用this指向window方法调用this指向调用对象构造函数this指向新实例call/apply/bindthis指向指定对象
4 函数嵌套调用函数应保持单一职责原则可通过嵌套实现复杂逻辑function fn1() { console.log(
; fn2(); console.log(fn
; } function fn2() { console.log(
; console.log(fn
; } fn1(); 示例判断2月天数function checkFebruaryDays() { const year prompt(输入年份); alert(isLeapYear(year) ? 闰年2月29天 : 平年2月28天); }
5 立即执行函数(IIFE)
1.
1 特点定义后立即执行通常只执行一次避免全局污染
1.
2 实现方式(function() { // 代码块 })(); (function() { // 代码块 }());
1.