news 2026/5/1 9:53:14

函数补充/数据存储

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
函数补充/数据存储

目录

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); // 原型链查找
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 8:30:41

上海AI实验室ImgCoder:AI实现科学手绘图精准生成

这项由上海人工智能实验室联合上海交通大学、香港大学、北京大学等多家机构共同完成的研究&#xff0c;发表于2026年1月的arXiv预印本服务器&#xff08;论文编号arXiv:2601.17027v1&#xff09;&#xff0c;为科学图像合成领域带来了重大突破。有兴趣深入了解的读者可以通过该…

作者头像 李华
网站建设 2026/5/1 6:15:52

腾讯突破:AI实现对话到电影的完整自动化制作

当你看到一部电影时&#xff0c;是否想过从剧本到银幕需要经历多少复杂的工作&#xff1f;导演需要将文字转换为视觉画面&#xff0c;摄影师要选择合适的镜头角度&#xff0c;演员要演绎角色情感&#xff0c;剪辑师要确保画面流畅连贯。现在&#xff0c;腾讯混元多模态团队与西…

作者头像 李华
网站建设 2026/5/1 8:39:39

Java毕设项目推荐-基于SpringBoot的都市轨道交通综合服务平台基于springboot的城市轨道交通安全管理系统【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 6:03:58

【阵列】低旁瓣稀疏同心环阵列优化Matlab实现

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#…

作者头像 李华
网站建设 2026/5/1 6:07:59

10368_基于SpringBoot的共享租车管理系统

1、项目包含项目源码、项目文档、数据库脚本、软件工具等资料&#xff1b;带你从零开始部署运行本套系统。2、技术说明后端&#xff1a;SpringBoot前端&#xff1a;VUE数据库&#xff1a;MySql开发工具&#xff1a;JDK1.8及以上 Eclipse MySQL Maven 本项目涉及多项技术&…

作者头像 李华
网站建设 2026/4/24 7:40:43

探索 MATLAB/Simulink 中 1.5MW 并网型双馈风力发电机的魅力

MATLAB/simulink 并网型双馈风力发电机&#xff08;DFIG&#xff09; 输出功率1.5MW 可实现单位因数并网 在风力发电领域&#xff0c;并网型双馈风力发电机&#xff08;DFIG&#xff09;凭借其独特优势占据着重要地位。今天咱们就来唠唠在 MATLAB/Simulink 环境下&#xff0c;…

作者头像 李华