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

JavaScript 核心语法与实战笔记:从基础到面试高频题

一、面试高频:apply 与 call 调用模式的区别

applycall 的核心作用一致——改变函数内 this 的指向并立即执行函数,唯一区别是参数传递方式不同:

  • apply:第二个参数需以数组形式传入,格式为 函数名.apply(this指向, [参数1, 参数2, ...])
    • 示例:test.apply(param, [1, 2, 3]);
  • call:第二个及以后参数需以逗号分隔传入,格式为 函数名.call(this指向, 参数1, 参数2, ...)
    • 示例:test.call(param, 1, 2, 3);

实际开发中可根据参数是否已存在于数组中选择:若参数是零散值,call 写法更简洁;若参数已在数组里,apply 无需额外拆解。

二、必懂语法:逗号运算符的规则

逗号运算符的核心规则:执行所有用逗号分隔的表达式,最终返回最后一个表达式的结果
示例:(i -= 2, [true, 'abc'][i]['length']) 中,先执行 i -= 2(i 从 3 变为 1),再执行 [true, 'abc'][1]['length'](取数组下标 1 的 ‘abc’,再取其长度 3),最终返回 3。

三、实战编程题:从定义到调用(附完整代码)

以下题目覆盖函数、对象、事件绑定等核心场景,均为面试高频考点,附详细注释和运行逻辑。

01 定义“重复执行函数”:指定次数+执行函数

需求:创建函数,接收“执行次数”和“待执行函数”两个参数,按次数重复执行函数。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>重复执行函数</title>
</head>
<script>
// 函数定义:a=执行次数,b=待执行函数
function repeatExecute(a, b) {for (let i = 1; i <= a; i++) {b(); // 每次循环执行函数b}
}
// 函数调用:执行3次,每次打印内容
repeatExecute(3, function() {console.log("第" + i + "次执行函数");
});
</script>
<body></body>
</html>

02 定义“返回函数的函数”:嵌套函数调用

需求:创建函数,其返回值是另一个带打印语句的函数,最终调用并执行打印。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>返回函数的函数</title>
</head>
<script>
// 外层函数:返回一个匿名函数
function getInnerFunc() {return function() {console.log("成功调用内层函数的打印语句");};
}
// 调用方式:外层函数()() → 先执行外层获取内层函数,再执行内层函数
getInnerFunc()();
</script>
<body></body
http://www.dtcms.com/a/334548.html

相关文章:

  • 从“Hello World”到“高并发中间件”:Go 语言 2025 系统学习路线图
  • 深入解析C++ STL链表(List)模拟实现
  • 微服务之注册中心与ShardingSphere关于分库分表的那些事
  • 类与类加载器
  • 基于GIS的无人机模拟飞行控制系统设计与实现
  • 某智慧教育平台登录流程分析
  • 元宇宙娱乐:重构数字时代的沉浸式体验
  • 嵌入式 Linux LED 驱动开发实验
  • RK3568 NPU RKNN(五):RKNN-ToolKit-lite2板端推理
  • 要导入StandardScaler类进行数据标准化,请使用以下语句:
  • JavaScript学习第十章-第三部分(dom)
  • B3865 [GESP202309 二级] 小杨的 X 字矩阵(举一反三)
  • C#计算阶乘程序改进
  • C# 元组的用法
  • Nona生命之树作品TRO突袭,冻结名单曝光
  • Vue2.x核心技术与实战(一)
  • 摩搭api 实现
  • 025 理解文件系统
  • 多机编队——(6)解决机器人跟踪过程中mpc控制转圈问题
  • 第四章 Linux实用操作
  • OpenJDK 17的C1和C2编译器实现中,方法返回前插入安全点(Safepoint Poll)的机制
  • 【LeetCode题解】LeetCode 35. 搜索插入位置
  • [Linux] Linux逻辑卷管理
  • 知识点汇总linuxC高级 -2系统命令压缩与链接
  • RK3568 NPU RKNN(三):RKNN-ToolKit2模型构建与推理
  • 【LeetCode】算法详解#13 ---回文链表
  • Vue 3.5重磅更新:响应式Props解构,让组件开发更简洁高效
  • [Linux] Linux交换空间管理 Linux系统启动原理
  • 慧穗云开放平台 CDK 开票对接
  • echart中x的0位置出现柱子宽度被裁掉一部分的问题