首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS立即执行函数学习

格式: 格式一:(function(){})() 格式二:(funtion(){}()) 理解:   立即执行函数会将声明函数表达式执行。...并且在多人开发项目上,你在全局或局部作用域中声明了一些变量,可能会被其他人不小心用同名变量给覆盖掉。由于javascipt自由性。...没有私有域概念,这样写可以模仿一个私有作用于,用匿名函数作为一个容器,容器内部可以访问外部变量,而外部变量不能访问内部变量。俗称”匿名包裹器“或者“命名空间”。   ...并且在匿名函数容器中写函数然后通过赋值方法,可以变向到达java类效果。将方法存进变量里,全局调用。...var rxr=r.control={}; var ff=22; rxr.ss=11; rxr.aa=function(){ console.log('执行

2.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    js匿名函数立即执行函数

    大家好,又见面了,我是你们朋友全栈君。 js匿名函数立即执行函数 1. 匿名函数 a)写法 b) 特点 2. 立即执行函数 a) 写法 b) 特点 c) 示例 1....var hello=function(){ console.log("hello"); }; hello();//hello b) 特点 匿名函数可以直接访问到外层署名函数(Foo)中变量...(使用关键字var定义),但不能访问外层署名函数属性(使用关键字this定义) 匿名函数既可以直接访问外层匿名函数变量,也可以直接访问外层匿名函数属性 外层函数类型: 署名函数 匿名函数...立即执行函数 该类函数没有声明,直接执行执行立即释放。一般做初始化比较合适。...,如function (){}(),这样不行,因为function (){}是声明不是表达式,如果是var fn=function (){}();就可以 但执行后,函数名或者变量就不代表函数了,被执行符号执行表达式其函数名字将被忽略

    2.6K20

    理解JavaScript立即执行函数

    IIFE (Immediately Invokable Function Expressions):是在函数声明后立即调用函数表达式。...立即执行函数通常包含两种使用格式,具体使用那一种风格可以根据个人习惯和团队规范选择: // 第一种: (function() {/* */})(); // 第二种: (function(){/* */...}()) // 也可以使用箭头函数声明 ;(() => {/* */}()) 数学符号都会导致函数立即执行,因为JavaScript引擎会将函数判断为表达式,而不是函数声明。...function(){}(); +function(){}(); -function(){}(); ~function(){}(); new关键字也会导致函数立即执行。...: 避免污染全局 在JavaScript函数内部,会形成一个块级作用域概念,可以利用IIFE函数避免全局污染,比如JQuery插件封装模式:(function($){ ``` //JQuery

    1.1K30

    JavaScript立即执行函数(IIFE)使用

    js立即执行函数(IIFE)有两种写法,分别为:(function ( ){})( ) 与 (function ( ){}( )) ,这两种写法基本上是没有区别的。 那么为什么要 IIFE?...1.传统方法啰嗦,定义和执行分开写; 2.传统方法直接污染全局命名空间(浏览器里 global 对象,如 window) 函数范围与块范围界定 使用var关键字声明局部变量作用域为封闭函数。...foo; // ReferenceError: foo is not defined 但是,块范围变量不能替代立即调用函数表达式。...通过这种方式,即使函数在IIFE词法范围外执行,也会创建一个闭包,使函数能够访问局部变量。...捕获全局对象 JavaScript代码在不同环境执行时,你所使用全局对象是不同。当代码在浏览器运行时,全局对象是windows。但是在Node.js中,全局对象是global。

    2.4K20

    深入理解立即执行函数

    前言 立即执行函数常用于第三方库,它可以用来隔离变量作用域,很多第三方库都会存在大量变量和函数,在ES5环境下为了避免变量污染,开发者想到解决办法就是使用立即执行函数。...本文就跟大家分享下立即执行函数相关知识点,欢迎各位感兴趣开发者阅读本文。...,你不得不求助立即执行函数来模拟。...上述两种写法是等价,要想立即执行函数做到立即执行,要注意两点: 函数体后面要有小括号 函数体必须是函数表达式而不能是函数声明 函数声明方式 在讲它们两者之间区别之前,我们先来了解下js函数两种声明方式...")); 讲解到此处时,我们会发现,上述代码写法正好是立即执行函数第二种写法,我们知道函数体后面跟着小括号,这个函数就会立即执行

    1.3K30

    你真的知道『立即执行函数』吗?

    立即执行函数,经常使用,但是你确定了解它嘛? 下面,就来看看吧! 1、定义 立即执行函数,又称IIFE....叫做执行符号 3、立即执行函数使用 声明后,直接加(); 将会报语法错误,执行符号只能跟在函数表达式后面 示例: function test(){ console.log('Function declaration...'); }() 报错:Uncaught SyntaxError: Unexpected token ')' 原因:立即执行函数 ,是执行函数表达式,而不是函数声明式 4、函数表达式 当一个函数需要立即执行情况...且函数名不能在外部使用 8、立即执行函数好处 1、可以创建一个与外界没有任何关联作用域,独立作用域 2、执行完成后,自动销毁 3、ES3 ES5 立场上是没有模块模仿,可用立即执行函数来模拟模块化...今天分享就到这,还有关于立即执行函数其它问题,欢迎提问

    61320

    前端面试之立即执行函数

    什么是立即执行函数 声明一个函数,并马上调用这个匿名函数就叫做立即执行函数。在定义好一个函数后,直接执行。...立即执行函数写法 有时候,我们定义函数以后,立即调用该函数,这时不能在函数定义后面直接加圆括号,这会产生语法错误。...解决方法: 1、使用立即执行函数,给每个li创建一个独立作用域,在立即执行函数执行时候,i值从0到2,对应三个立即执行函数,所以就能正常输出了。...立即执行函数参数 (function(i) { ... })(j) 如果立即执行函数中需要全局变量,全局变量会被作为一个参数传递给立即执行函数。j代表是实参,i代表执行函数形参。...立即执行函数作用 1、改变变量作用域(创建一个独立作用域)。 2、封装临时变量。

    1.7K10

    IIFE 立即执行函数表达式

    IIFE全称为Immediately Invoked Function Express-立即执行函数(表达式),顾名思义,是在定义之后立即执行函数。...IIFE主要以保护变量范围著称,时候也会被称为“自执行匿名函数”(self-executing anonymous function)。实际使用闭包定义在IIFE内部变量外界是访问不到。...幸运是,你可以通过立即执行函数设置别名来解决这个问题:(function ($) {// You’re safe to use jQuery here})(jQuery);通过将代码包裹在IIFE中,...你还有IIFE可以用,Immediately Invoked Function Expression-立即执行函数可以达到相同目的。...();console.log(greeting); // error: Uncaught ReferenceError: greeting is not defined正如在以上demo中见到,在立即执行函数内部执行

    10510

    立即执行函数表达式(IIFE)

    立即执行函数表达式(IIFE) 幸运是,固定语法错误很简单。最普遍接受方式告诉解析器这是一个被括号包裹函数表达式。...这一括号通常意味着函数表达式会被立即执行,变量将包含函数结果而不是函数本身。这也会解决一些麻烦,否则如果你写了一个很长函数表达式,别人必须拉到最底部查看该函数有没有被立即执行。...闭包存储状态 就像函数函数名调用时参数会被传递一样,立即执行函数表达式时参数同样会被传递。因为在一个函数内部定义函数可以访问外部函数变量(这种关系被称为闭包)。...立即执行函数表达式最好一方面就是,因为这个匿名函数表达式被立即执行,没有标识符,所以闭包使用不会污染当前作用域。 “自执行匿名函数”有错误吗?...“立即执行函数表达式”是什么?它是一个被立即执行函数表达式,就像这个名称会让你相信一样。 我希望看到 JavaScript 社区成员在他们文章和报告中采用“立即执行函数表达式”这个术语。

    91950

    js除了立即执行函数,你还可以这么玩 (预计阅读 1 min)

    【本文预计阅读时长 1 min】 假如在同一个目录下,两个js里面可能有同名函数,后面js里定义函数会覆盖前面js定义函数,为了避免冲突,要用模块化思想解决问题,大家可能都会使用立即执行函数去解决...= { func1, show }; // 全局暴露js2 })(window) 运行结果 test1.js--func1 test2.js--show 使用立即执行函数而不是直接暴露也做到来私有化...private意思,比如有5个函数,我只想暴露1个函数给别人,那么window.js1 = {你想暴露1个函数},这样别人就只能访问你暴露唯一函数,另外4个访问不了。...除此之外,我们能用其他方法吗?既然是解决作用域问题,那么我们也可以利用块级作用域来解决这个问题 ES6中出现了let,在块级作用域之外调用不到,那么新写法就来了。...function() { console.log("test2.js--show"); } window.js2 = { func1, show }; } 执行效果一样也是一样

    32110

    JavaScript立即执行函数解释分析(4)—总结篇

    说明 这次来对立即执行函数 Immediately-Invoked Function Expression (IIFE) ,做最后总结,会把前面几篇提到内容做一个整合,这样立即执行函数就算是说完了...作用 立即执行函数,可以避免全局变量污染 ?...定义一个全局变量a,第一次能打印出来,第二次也能打印出来,用立即执行函数写法,在函数中也定义一个变量a,函数执行了,打印了a,然后再次打印 a 时候,打印出是全局变量a,立即执行函数变量a已经没有了...(函数执行后,函数变量如果没有被继续引用,就会被释放),而全局变量a,还是存在,所以,立即执行函数可以避免全局变量污染 , 也防止产生冲突。...当函数只需要执行一次时候,我们选择立即执行函数方式也是很好。 总结 立即执行函数,相信大家应该明白了,到此算是把立即执行函数说完了,如果文中有什么问题,也非常欢迎大家指正。

    51710

    JavaScript之闭包问题以及立即执行函数

    https://blog.csdn.net/sinat_35512245/article/details/53514804 今天我将会来浅谈一下关于JavaScript立即执行函数以及闭包问题...首先我们先要了解一下关于立即执行函数: ( function(){…} )()和( function (){…} () )是两种javascript立即执行函数常见写法,最初我以为是一个括号包裹匿名函数...,再在后面加个括号调用函数,最后达到函数定义后立即执行目的,后来发现加括号原因并非如此。...要理解立即执行函数,需要先理解一些函数基本概念。...(){…} () )这两种立即执行函数写法,最初我以为是一个括号包裹匿名函数,并后面加个括号立即调用函数,当时不知道为什么要加括号,后来明白,要在函数体后面加括号就能立即调用,则这个函数必须是函数表达式

    94720

    JavaScript立即执行函数解释分析(3)—谈谈圆括号()

    说明 前两篇文章,我们似乎已经明白为什么,立即执行函数要那样写了,这次为了能更加深入理解,我们来说说圆括号事。...var a=1+2*3; //a值为7 var b=(1+2)*3; //a值为9 2、传递参数 在声明函数或者调用函数时候,如果有参数,需要放在圆括号中 //函数声明 传递形参...x function a(x){ console.log(x); } //函数调用 传递实参 2 a(2); 3、调用函数或者方法 函数声明时候是不执行,如果需要执行就要用到圆括号,来调用它...{ console.log(1); })(); //()前面是函数表达式 所以会立即执行 JavaScript中圆括号()里面不能包含语句,所以在这一点上,解析器在解析function关键字时候...总结 这篇文章主要在说圆括号,也是为了能让大家更加理解立即执行函数,下一篇会对立即执行函数进行最后总结。

    79530

    function前加运算符实现立即执行函数

    我们知道函数调用方式通常是FunctionName() 但如果我们尝试为一个“定义函数”末尾加上(),解析器是无法理解。...function msg(){ alert('message'); }();//解析器是无法理解 定义函数调用方式应该是 msg()。 想让函数立即执行可以将函数体部分用()包裹起来。...这是因为,使用括号包裹定义函数体,解析器将会以函数表达式方式去调用定义函数。也就是说,任何能将函数变成一个函数表达式作法,都可以使解析器正确调用定义函数。...(只多了一个感叹号),就是表达式了,将执行后面的代码,也就合法实现调用 !...效果等同于以下常用两种立即执行方式: (function() {})(); // or (function() {}()); 谢谢大家阅读。

    99620
    领券