【ECMAScript】立即执行函数

函数声明: function foo() {},函数声明会被引擎提升
匿名函数:function () {};
函数表达式:var fun = function () {};

要在函数体后面加括号就能立即调用,则这个函数必须是函数表达式,不能是函数声明

foo();// 因为函数声明提升,不会报错
function foo() {
    console.log("foo");
}
fun();// fun没有赋值,会报错
var fun = function () {
    console.log("fun");
}

 

立即执行函数

标准写法

(function foo() {
    console.log("方式1");
}());
(function foo() {
    console.log("方式2");
})();

运算符写法。!、+、-、~都将函数声明转换成函数表达式,消除了javascript引擎识别函数表达式和函数声明的歧义,告诉javascript引擎这是一个函数表达式,不是函数声明。

!function foo() {
    console.log("方式3");
}();
+function foo() {
    console.log("方式4");
}();
-function foo() {
    console.log("方式5");
}();
~function foo() {
    console.log("方式6");
}();

追加防御型分号

;(function foo() {
    console.log("方式1");
}());

JQuery相关

(function($){
    console.log("...");
})(jQuery);

将实参jQuery传入函数function()接收。

(function()...);(document).ready(function(){...})的简写形式,是在DOM加载完成后执行的回调函数,并且只会执行一次。

下面两个效果完全一样

$(function() {
   console.log("...");
});
$( document ).ready(function() {
   console.log("...");
});

 

posted @   翠微  阅读(43)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示