JavaScript:函数应用的几个细节问题

news/2026/1/24 13:30:09/文章来源:https://www.cnblogs.com/chenlight/p/19526059

一、以函数调用的形式进行赋值操作的情况

比如:

ele.onclick = HTML();

先看一下具体的代码情况,如下

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>W3Cschool教程(w3cschool.cn)</title>
</head><body><h1 id='h1'>1</h1><h1 id='h2'>2</h1><h1 id='h3'>3</h1><script>function csHTML(ele) {console.log(ele.innerHTML);}function HTML() {// console.log(this.innerHTML);console.log('123');}var h1coll = document.getElementsByTagName('h1');for (var i = 0; i < h1coll.length; i++) {var ele = h1coll[i];//一个错误的示范  这样叫方法调用HTML()ele.onclick = HTML();// ele.onclick = function() {//     console.log(this.innerHTML);// }}</script>
</body></html>

运行结果如下:

image

核心错误:ele.onclick = HTML()

 
这是这段代码最关键的错误。
 
  • HTML()函数调用,代码执行到这一行时会立刻执行HTML()函数,并把函数的返回值(这里是undefined)赋值给ele.onclick
  • 这意味着:页面加载时就会打印 3 次123,而点击<h1>元素时不会有任何反应(因为onclick被赋值成了undefined)。
  • 正确的事件绑定方式是:ele.onclick = HTML; 
  • <!DOCTYPE html>
    <html><head><meta charset="utf-8"><title>W3Cschool教程(w3cschool.cn)</title>
    </head><body><h1 id='h1'>1</h1><h1 id='h2'>2</h1><h1 id='h3'>3</h1><script>function csHTML(ele) {console.log(ele.innerHTML);}function HTML() {console.log(this.innerHTML);// console.log('123');}var h1coll = document.getElementsByTagName('h1');for (var i = 0; i < h1coll.length; i++) {var ele = h1coll[i];//这才是正确的方式ele.onclick = HTML;// ele.onclick = function() {//     console.log(this.innerHTML);// }}</script>
    </body></html>

运行结果如下:

image

鼠标点击左侧对应的1-2-3数字,右侧的控制台就会输出相应的点击对象的值;

  • 函数引用 vs 函数调用
    • ele.onclick = HTML:把HTML函数本身赋值给onclick事件,点击元素时才会执行这个函数(这是事件绑定的正确方式)。
    • ele.onclick = HTML():立刻执行HTML()函数,把返回值(undefined)赋值给onclick,点击元素无反应。
     
  • this 的指向:在事件处理函数中,this默认指向触发事件的 DOM 元素(这里就是被点击的<h1>),所以this.innerHTML能拿到<h1>里的内容(1/2/3)。

二、匿名函数进行赋值的情况

继续将上述代码稍微改造一下,如下:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>W3Cschool教程(w3cschool.cn)</title>
</head><body><h1 id='h1'>1</h1><h1 id='h2'>2</h1><h1 id='h3'>3</h1><script>function csHTML(ele) {console.log(ele.innerHTML);}function HTML() {console.log(this.innerHTML);// console.log('123');}var h1coll = document.getElementsByTagName('h1');for (var i = 0; i < h1coll.length; i++) {var ele = h1coll[i];//这才是正确的方式// ele.onclick = HTML;ele.onclick = function() {console.log(123456);}}</script>
</body></html>

运行结果如下:

image

点击左侧数字,右侧控制台就会输出123456,多次点击就会计数,如上所示,共点击了四次;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1209885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分析河南值得购买的实验室测油仪,性价比高的是哪家?

随着环保监测要求的不断提高,实验室测油仪作为水质、土壤中油类污染物检测的核心设备,其可靠性精准度易用性成为检测机构和企业实验室选型的关键指标。本文围绕用户关心的信誉佳的实验室测油仪怎么选值得购买的实验室…

基于设备特征的响应式 UI 构建:Flutter for OpenHarmony 中的智能布局实践

在 OpenHarmony 生态中&#xff0c;应用可能运行于手机、平板、车机甚至智慧屏等多种设备。这些设备不仅屏幕尺寸差异巨大&#xff0c;用户交互方式也各不相同。因此&#xff0c;“一套代码适配所有终端” 的理想&#xff0c;不能仅靠固定布局实现&#xff0c;而需引入基于设备…

开学季购机推荐,荣耀手机怎么样?哪几款值得推荐?

多屏协同 开学季&#xff0c;应该也有不少的学生朋友有换新手机的打算&#xff0c;如果你比较喜欢荣耀手机&#xff0c;那这篇文章必须收藏&#xff0c;这里就给大家推荐各个不同价位段的荣耀手机&#xff0c;简单明了的告诉大家优缺点&#xff0c;大家根据自己实际的需求、预算…

继续堆 Prompt,真的不如早点学 Skill

最近在 AI 圈&#xff0c;尤其是 Claude 社区&#xff0c;Skill 这个词刷屏刷得特别狠。有人说它是“下一个 Prompt Engineering”&#xff0c;有人直接喊“Prompt 已死&#xff0c;Skill 当立”。 我自己从去年底开始大量用 Skill 替换长 prompt 后&#xff0c;真实感受是&am…

RAG-索引构建

一.向量嵌入Embedding1.什么是Embedding核心定义&#xff1a;将非结构化的数据&#xff08;如文本&#xff0c;音频&#xff0c;图片等&#xff09;映射为低维&#xff0c;稠密&#xff0c;连续的实数向量的过程。三要素&#xff1a;数据&#xff1a;原始的数据内容嵌入模型&am…

Spring AI 支持 Agent 人机交互:让 AI 先问清楚再行动

传统的 AI 交互往往遵循一个固定模式&#xff1a;你提供问题&#xff0c;AI 基于假设给出答案。 当这些假设与你的实际需求不符时,你就会陷入反复修正的循环&#xff0c;每一个错误的假设都意味着返工——浪费时间和上下文。 如果你的 AI Agent 能够在提供答案之前主动询问明…

AI大模型:程序员的2026新机遇窗口【建议收藏】

2026年开年&#xff0c;以字节跳动即梦AI为代表的新一代大模型平台密集落地&#xff0c;如同为IT从业者的职业赛道注入强心剂&#xff0c;催生出全新的技术风口与职业可能。相较于2025年DeepSeek带来的启蒙效应&#xff0c;2026年的大模型技术已从“概念爆发”迈入“落地深耕”…

个人介绍(mjhcsp)

我是mjhcsp&#xff0c;来自山东潍坊&#xff0c;这是官方账号&#xff0c;我只有12岁&#xff0c;只是六年级&#xff0c;可我的访问量达到了14万&#xff0c;现在大家观察到了我这段时间写C多了&#xff0c;因为我擅长C&#xff0c;但我也写其他。 版权问题 请注意&#xf…

2026缠膜机行业佼佼者:哪些公司值得你选择,无人化缠绕包装机/套膜包装机/自动绕膜机,缠膜机联系方式怎么选择

行业背景:包装自动化需求激增,缠膜机市场迎来增长期 随着全球制造业向智能化、柔性化转型,包装环节的自动化需求持续攀升。缠膜机作为物流包装的核心设备,凭借其提升包装效率、降低膜材损耗、保障货物运输安全等优…

视频制作优选方案:2026年4A公司口碑推荐实战指南,视频制作大型公司优选实力品牌

在美妆品牌竞争白热化的当下,视频制作已成为品牌突破市场、塑造差异化形象的核心工具。从产品概念可视化到消费者情感共鸣,专业视频制作能力直接影响品牌的市场渗透力与用户忠诚度。杭州帕特广告策划有限公司(以下简…

2026优质油水分离器厂家推荐:行业领先品牌盘点

油水分离器作为餐饮、食品加工、工业生产等领域不可或缺的环保设备,主要用于分离污水中的油脂和杂质,有效防止管道堵塞、减少环境污染,同时助力企业满足环保排放要求。随着国家对环境保护力度的加大,以及餐饮行业规…

信创环境下,网页文件上传下载有哪些推荐的解决方案?

广西软件公司大文件传输解决方案 作为广西软件公司项目负责人&#xff0c;我深刻理解当前大文件传输需求的复杂性与紧迫性——100G级文件传输稳定性、信创国产化适配、多技术栈兼容、加密合规是核心痛点。结合公司现有ASP.NET WebForm/.NET Core技术栈与客户严格需求&#xff…

国企项目网页开发,文件上传下载有哪些实用的解决方案?

大文件传输系统建设方案&#xff08;ASP.NET技术栈&#xff09; 一、项目背景与核心需求 作为公司项目负责人&#xff0c;针对产品部门提出的100G级大文件传输需求&#xff0c;需构建一套高兼容性、高稳定性、全浏览器支持的解决方案。核心需求如下&#xff1a; 功能需求&…

国防军工网页项目,如何选择文件上传下载的解决方案?

大文件传输系统开发方案 项目背景与需求分析 作为广东某软件公司的前端工程师&#xff0c;我正负责公司新项目的大文件传输模块开发工作。客户需求具有以下核心特点&#xff1a; 超大文件支持&#xff1a;需处理20G级别的文件传输复杂场景覆盖&#xff1a; 文件/文件夹上传下…

JS截屏内容粘贴到CKEDITOR为何无法生成高清图?

前端老哥的CMS编辑器“文档全能王”&#xff1a;一键导入粘贴&#xff0c;680元开箱即用&#xff01; 兄弟们&#xff01;我是西安一名“头发没秃但项目没少接”的前端程序员&#xff0c;最近刚接了个CMS企业官网外包活——客户要在后台新闻编辑器里加“文档导入Word粘贴”功能…

2026年性价比高的演出服厂家,广东汇杰服饰是成人演出服优质生产商

在舞蹈艺术蓬勃发展的当下,一套贴合舞种特性、工艺精湛的演出服,是舞者绽放舞台光彩的重要助力。尤其是成人演出服,既需满足专业舞蹈动作的舒展需求,又要通过独特设计传递艺术表达,因此选择靠谱的演出服生产商至关…

CKEDITOR前端粘贴图片如何触发PHP后台自动转存?

企业级文档导入与粘贴解决方案技术提案 项目背景与需求分析 作为山东某国企项目负责人&#xff0c;我面临着在企业网站后台管理系统集成Word粘贴、Word导入及微信公众号内容导入功能的迫切需求。基于我司的技术环境和业务要求&#xff0c;需要一套完整的解决方案满足以下核心…

2025年广东省职业院校技能大赛高职组“区块链技术应用”竞赛试题(二) - 实践

2025年广东省职业院校技能大赛高职组“区块链技术应用”竞赛试题(二) - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fa…

防水施工公司选哪家好,上海大友建设集团性价比高排前十

2026年建筑行业品质升级趋势显著,防水工程作为建筑安全与耐用性的核心保障,已成为业主、物业及建筑企业关注的焦点。无论是住宅外墙的长期防渗、老旧小区的屋面修缮,还是商业建筑的复杂防水场景,优质防水服务公司的…

跨平台CKEDITOR插件如何实现图片粘贴即传PHP服务器?

广州软件公司技术负责人&#xff1a;Word粘贴与多格式文档导入功能开发实录 一、需求分析与技术规划 作为技术负责人&#xff0c;我主导了客户需求的技术可行性评估与方案规划。核心需求包括&#xff1a; 富文本粘贴功能&#xff1a;支持Word/微信公众号内容粘贴&#xff0c…