当前位置: 首页 > news >正文

函数补充/数据存储

目录

1 函数的深入理解

1.1 函数的返回值(return)

1.1.1 基本语法

1.1.2 使用要点

1.1.3 返回值类型

1.1.4 流程控制对比

1.2 arguments 对象

1.2.1 特性

1.2.2 应用场景

1.2.3 arguments.callee

1.3 函数方法对比

1.3.1 传参方式

1.3.2 this 指向规则

1.4 函数嵌套调用

1.5 立即执行函数(IIFE)

1.5.1 特点

1.5.2 实现方式

1.5.3 参数传递

2 数据存储机制

2.1 数据类型比较

2.2 原型系统


1 函数的深入理解

1.1 函数的返回值(return)

1.1.1 基本语法
function functionName() { return resultValue; } functionName();
1.1.2 使用要点
  • 函数执行后通过return将结果返回给调用者
  • 函数调用表达式functionName()的值即为return后的值
  • 可通过变量接收返回值:
var result = fn();
  • return会立即终止函数执行
  • 只能返回单个值(如需返回多个值,可使用数组或对象)
  • 可返回任意数据类型
  • 无返回值的return等价于返回undefined
  • 函数若未显式使用return,默认返回undefined
1.1.3 返回值类型
  • 基本类型
  • 引用类型(对象/数组)
  • 函数
1.1.4 流程控制对比
  • break:终止当前循环
  • continue:跳过本次循环
  • return:终止整个函数并返回值

📌 示例:求两数最大值

function getMax(a, b) { return a > b ? a : b; }

1.2 arguments 对象

函数调用时自动接收的两个隐式参数:

  1. 上下文对象this
  2. 实参集合arguments
1.2.1 特性
  • 类数组对象
  • 具有length属性
  • 支持索引访问
  • 无数组方法
1.2.2 应用场景
  • 存储所有传入实参
  • 即使未定义形参也能获取实参
arguments[0]; // 首参数 arguments[1]; // 次参数
1.2.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 !== 0) || year % 400 === 0; }

💡 面试要点:

  1. 伪数组与真数组的区别
  2. 常见伪数组获取方式:
    • arguments
    • DOM集合(如getElementsByTagName

1.3 函数方法对比

📌 核心区别:

  • 三者均可改变函数this指向
  • call()/apply()立即执行
  • bind()返回新函数
1.3.1 传参方式
  • call(thisObj, arg1, arg2)
  • apply(thisObj, [args])
  • bind(thisObj, arg1, arg2)
1.3.2 this 指向规则
  1. 普通调用:this指向window
  2. 方法调用:this指向调用对象
  3. 构造函数:this指向新实例
  4. call/apply/bind:this指向指定对象

1.4 函数嵌套调用

  • 函数应保持单一职责原则
  • 可通过嵌套实现复杂逻辑
function fn1() { console.log(111); fn2(); console.log('fn1'); } function fn2() { console.log(222); console.log('fn2'); } fn1();

📌 示例:判断2月天数

function checkFebruaryDays() { const year = prompt('输入年份'); alert(isLeapYear(year) ? '闰年2月29天' : '平年2月28天'); }

1.5 立即执行函数(IIFE)

1.5.1 特点
  • 定义后立即执行
  • 通常只执行一次
  • 避免全局污染
1.5.2 实现方式
(function() { // 代码块 })(); (function() { // 代码块 }());
1.5.3 参数传递
(function(a, b) { console.log(`a=${a}, b=${b}`); })(123, 456);

2 数据存储机制

2.1 数据类型比较

数据类型分类
基本类型:string, number, boolean, undefined, null
引用类型:object, function...

let a = 1; let b = 1; console.log(a === b); // true(值比较) let obj1 = { name: "jack" }; let obj2 = { name: "jack" }; console.log(obj1 === obj2); // false(地址比较)

2.2 原型系统

function Person(name, age) { this.name = name; this.age = age; } // 函数的prototype属性(显式原型) Person.prototype.sayHi = function() { console.log("hello"); }; let p1 = new Person("jack", 18); // 实例的__proto__属性(隐式原型) console.log(Person.prototype === p1.__proto__); // true console.log(p1.__proto__.__proto__.toString); // 原型链查找
http://www.jsqmd.com/news/310042/

相关文章:

  • Java毕设项目:基于springboot的台球厅管理系统(源码+文档,讲解、调试运行,定制等)
  • Flutter for OpenHarmony 实战:双控制系统实现(按钮+键盘)
  • 【计算机毕业设计案例】基于springboot的城市轨道交通安全管理系统(程序+文档+讲解+定制)
  • 【毕业设计】基于springboot的台球厅管理系统(源码+文档+远程调试,全bao定制等)
  • 【计算机毕业设计案例】基于spark的买菜推荐系统设计与实现基于SpringBoot+Spark的买菜推荐系统设计与实现(程序+文档+讲解+定制)
  • Flutter for OpenHarmony 实战:食物生成算法与难度递增系统
  • KAIST团队突破视频生成瓶颈:让AI学会“自我反思“修正动作错误
  • Flutter for OpenHarmony 实战:CustomPainter游戏画面渲染详解
  • 上海AI实验室ImgCoder:AI实现科学手绘图精准生成
  • YOLO26改进 - 注意力机制 | ParNet并行子网络:多分支协同优化特征表达,增强模型判别能
  • 北大腾讯团队只改一行代码,让AI图像生成效果提升20%!
  • 苏州大学突破:新型注意力机制赋能AI语境适应性对话
  • 腾讯突破:AI实现对话到电影的完整自动化制作
  • 清华大学等多所顶尖院校联手揭秘智能数据准备革命
  • 网络工程师必看:11个协议端口号形象记忆法,看完再也忘不掉(附记忆宫殿地图)
  • Agentic AI的“责任边界”:提示工程架构师必须明确的5个问题
  • 探索H6型PFC源代码实现:意想不到的效果
  • 永磁无刷电机(PMSM)Simulink模型搭建与解析
  • 探索 MATLAB/Simulink 中 1.5MW 并网型双馈风力发电机的魅力
  • 光伏系统遮阴下的MPPT最大功率跟踪:粒子群算法(PSO)的奇妙应用
  • 计算机Java毕设实战-基于AI功能+大数据可视化分析+Spark的买菜推荐系统设计与实现基于spark的买菜推荐系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Java计算机毕设之基于SpringBoot+Spark的买菜推荐系统设计与实现基于spark的买菜推荐系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • Maven 核心
  • 近屿智能发现:年终奖背后的IT赛道秘密
  • 【阵列】低旁瓣稀疏同心环阵列优化Matlab实现
  • 昇腾与Jetson核心疑问解析:结合某高校自研国产盒子的实际场景说明
  • 从理论到代码:实现AI原生应用中的知识抽取
  • SpringBoot配置文件加载顺序:一场配置界的权力游戏
  • 一种电梯高峰归底系统的分层模块化设计方案,包含时间调度层、状态感知层、指令执行层和外部交互层四大核心模块。系统通过时间调度自动切换高峰模式,状态感知层实时监测电梯运行状态,指令执行层实现归底控制逻辑
  • 2026必备!专科生论文神器TOP8:开题报告文献综述全测评