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

在同花顺中学习JS自执行函数的知识

image

以上高亮部分展示的是 JavaScript 的 IIFE(立即执行函数表达式) 语法

1. 先看完整结构

 
你这段代码:
!function(n){}(),function(n){}(),function(n){}(),function(r){}()
 
它本质就是 4 个独立的、立即执行的匿名函数,用逗号连在一起写了。
 

 

2. 核心语法:!function(){} 是什么?

这是 IIFE(Immediately Invoked Function Expression)
 
= 定义完函数,立刻自动执行
 
正常写法是:
(function(n){})();
 
!function(n){}()简写等价写法
  • ! 把函数声明强行变成表达式
  • 后面加 () 就会立刻执行

作用

  • 创造一个独立作用域,变量不会污染全局
  • 代码一加载就自动执行
  • 老版本 JS 非常常用(模块化、隔离代码)

 

3. 逗号 , 是什么意思?

fn1(), fn2(), fn3();
 
逗号在这里是 JavaScript 逗号运算符
  • 依次执行每个表达式
  • 只返回最后一个结果
  • 只是把多个 IIFE 写在一行

 

4. 完整拆解你的代码

!function(n){}(),  // 第1个立即执行函数
function(n){}(),   // 第2个
function(n){}(),   // 第3个
function(r){}();   // 第4个
 
它们之间互相独立,只是写在一行。
 

 

5. 这种写法一般用在哪?

  • 老版模块化(没有 ES6 module 时)
  • 压缩后的代码(webpack/rollup 打包产物)
  • 避免变量污染全局作用域
  • 前端库、插件常用

6.先验证:纯声明写法 必报错

// ❌ 直接报错:Uncaught SyntaxError
function(n){}()
 
原因:
  1. function 开头 → JS 解析为函数声明(Function Declaration)
  2. 函数声明不能直接加 () 调用,语法不允许

而后面几个:xxx , function(){}()可以正常运行,关键就是逗号运算符 ,

!function(n){}(),
function(n){}(),
function(n){}(),
function(r){}()

逗号会把后面的 B 整体转为表达式

👉 这里的 function 不再是语句开头,被逗号包裹进表达式里

👉 身份变成了函数表达式,不是函数声明

👉 函数表达式 + () 立即调用,完全合法

7.总结:常见 IIFE 三种合法写法

 
都是为了把函数变成表达式
// 1. 括号包裹(最经典)
(function(){})()// 2. 一元运算符 ! + - ~
!function(){}()// 3. 逗号/赋值等前置变成表达式
0, function(){}()

下面进行实例演示,如下:

// 使用 ! 强制将函数视为表达式并立即执行
// 经典模式
!function(n) {console.log("我是立即执行的函数!");console.log("传入的参数是:", n);
}(666);// !function(n) {
//     console.log("我是立即执行的函数!");
//     console.log("传入的参数是:", n);
// }(666),function(n) {
//     console.log("我是立即执行的函数!");
//     console.log("传入的参数是:", n);
// }(555),function(n) {
//     console.log("我是立即执行的函数!");
//     console.log("传入的参数是:", n);
// }(444)// a = 3, function(n) {
//     console.log("我是立即执行的函数!");
//     console.log("传入的参数是:", n);
// }(666)

image

 

// 使用 ! 强制将函数视为表达式并立即执行
// 经典模式
// !function(n) {
//     console.log("我是立即执行的函数!");
//     console.log("传入的参数是:", n);
// }(666);//一元运算符! + - ~
!function(n) {console.log("我是立即执行的函数!");console.log("传入的参数是:", n);
}(666),function(n) {console.log("我是立即执行的函数!");console.log("传入的参数是:", n);
}(555),function(n) {console.log("我是立即执行的函数!");console.log("传入的参数是:", n);
}(444)// a = 3, function(n) {
//     console.log("我是立即执行的函数!");
//     console.log("传入的参数是:", n);
// }(666)

image

 

// 使用 ! 强制将函数视为表达式并立即执行
// 经典模式
// !function(n) {
//     console.log("我是立即执行的函数!");
//     console.log("传入的参数是:", n);
// }(666);//一元运算符! + - ~
// !function(n) {
//     console.log("我是立即执行的函数!");
//     console.log("传入的参数是:", n);
// }(666),function(n) {
//     console.log("我是立即执行的函数!");
//     console.log("传入的参数是:", n);
// }(555),function(n) {
//     console.log("我是立即执行的函数!");
//     console.log("传入的参数是:", n);
// }(444)// 赋值前置,逗号后面为表达式
a = 3, function(n) {console.log("我是立即执行的函数!");console.log("传入的参数是:", n);
}(333)

image

http://www.jsqmd.com/news/740951/

相关文章:

  • 2026年5月六西格玛证书TOP2推荐:绿带VS黑带优缺点评价(附中国质量协会报考指南) - 众智商学院课程中心
  • 2026年05月PMP含金量测评报告:全球认可度+避坑指南Top榜单 - 众智商学院课程中心
  • Windows 11任务栏歌词:让音乐融入你的工作流
  • G-Helper终极指南:3大技巧解锁华硕笔记本性能优化与风扇控制
  • 别再为Keil的printf发愁了!三种方法(含MicroLIB和重定向)保姆级配置指南
  • Qwen3-4B-Thinking-Gemini-Distill新手教程:首次加载延迟应对策略与token流式渲染优化
  • TTTAttributedLabel终极性能测试:大数据量文本渲染深度分析
  • 掌握YimMenu:从游戏保护到体验增强的5大核心能力
  • 5月2日成都地区磐金产无缝钢管(8163-20#;外径42-630mm)批发报价 - 四川盛世钢联营销中心
  • 终极免费解决方案:八大网盘直链下载助手LinkSwift深度评测
  • (第三十一篇)OpenClaw宪法的裁决——从沙箱囚禁到内生伦理的法治升维
  • 数值方法 4.23 课堂作业 —— EM算法(E步)
  • 掌握bypy文件对比:3步实现百度云与本地文件完美同步
  • 终极免费暗黑2存档编辑器:轻松修改D2S文件,打造完美角色!
  • 如何用 markdown-pdf 创建专业文档:从安装到高级配置
  • 2026年PMP认证推荐指南:含金量/费用/避坑全对比 - 众智商学院课程中心
  • Kasetto:轻量级单向文件同步工具,实现高效备份与部署
  • 3步快速掌握:WindowResizer终极窗口尺寸强制调整工具完整指南
  • 创建 / 修改 / 删除视图
  • 使用Taotoken CLI工具一键配置Codex模型调用环境
  • Phi-mini-MoE-instruct多专家路由机制:不同任务触发不同expert实测
  • NNI调参实战避坑指南:从搜索空间配置到Web UI监控,我的踩坑记录
  • Mitsuba 2偏振渲染技术:完整的光学模拟解决方案
  • 终极TensorRT_Pro指南:快速掌握代码规范、调试技巧与性能调优
  • React Native Background Geolocation:终极跨平台位置跟踪解决方案
  • Penlight完全指南:10个核心模块助你快速提升Lua开发效率
  • Swift原生大语言模型本地化部署:LLM.swift架构解析与实战指南
  • VoDSL技术:中小企业高效通信解决方案
  • 【Linux从入门到精通】第50篇:专栏总结与Linux学习之路的未来展望
  • 如何免费实现跨平台图表设计:drawio-desktop完整指南