匿名函数从语法上叫函数直接量,JavaScript语法需要包围匿名函数的括号,事实上自调用匿名函数有两种写法: 为什么要传入window呢? 通过以上的介绍,我们大概了解通过 ()可以使得一个函数表达式立即执行。 所以 ( function () {…} ) () 内部定义的变量不会和外部的变量发生冲突,俗称“匿名包裹器”或“命名空间”。 ( function () { // ... 所有的变量和function都在这里声明,并且作用域也只能在这个匿名闭包里 // ...但是这里的代码依然可以访问外部全局的对象 } ()); 同下面 (function () { /* 内部代码 */ }) ();
匿名函数有两种用法:
赋值
自我执行
1.声明一个匿名函数,直接赋值给某一个事件
windon.onload = function(){
alert('hello');
};
2.使用匿名函数表达式。将匿名函数,赋值给一个变量。
声明:var func=function(){ }
调用:func();
var show = function(){
alert('hello');
};
show();
注意:使用匿名函数表达式时,函数的调用语句,必须放在函数声明语句之后!!!
原因:检查装载时,会先对show变量及这个匿名函数声明,此时,还未将匿名函数赋值给show变量,如果在表达式之前调用,会报错 show is not a function
js代码的执行顺序问题
js代码在运行时,会分为两大部分———检查装载 和 执行阶段。
检查装载阶段:会先检测代码的语法错误,进行变量、函数的声明
执行阶段:变量的赋值、函数的调用等,都属于执行阶段。
3.自执行函数。
;(function () {
console.log('匿名函数自调用1');
})()
!function () {
console.log('匿名函数自调用2');
}()
//1.使用 !开头,结构清晰,不容易混乱,推荐使用;
!function(){
document.write('ni hao');
}()
//2.无法表明函数与之后的()的整体性,不推荐使用。
(function(){
document.write('wo hao');
})();
//3.能够将匿名函数与调用的()为一个整体,官方推荐使用;
(function(){
document.write('hello');
}());
//4.放在中括号内执行
[function(){
document.write('world');
}()];
//5.使用 + 运算符
+function(){
document.write('ni hao');
}()
//6.使用 - 运算符
-function(){
document.write('ni hao');
}()
//7.使用波浪符 ~
~function(){
document.write('ni hao');
}()
//8.使用 void
void function(){
document.write('ni hao');
}()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现