JS匿名执行函数】的更多相关文章

一.匿名函数的创建 第一种:(调用sum后可执行) var sum=function(x,y){ return x+y; } 第二种:(可自执行) void function(x,y){ }(1,2); 自执行的匿名函数 1. 什么是自执行的匿名函数?    它是指形如这样的函数: (function {// code})();    2. 疑问    为什么(function {// code})();可以被执行, 而function {// code}();却会报错?    3. 分析   …
js立即执行函数可以让你的函数在创建后立即执行,js立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行. 一.JS立即执行函数的写法 方式1.最前最后加括号 (function(){alert(1);}()); 方式2.function外面加括号 (function(){alert(1);})(); 方式3.function前面加运算符,常见的是!与void !function(){alert(1);}(); void…
一.JS立即执行函数的写法 方式1.最前最后加括号 (function(){alert(1);}()); 方式2.function外面加括号   (function(){alert(1);})(); 方式3.function前面加运算符,常见的是!与void   !function(){alert(1);}(); void function(){alert(2);}(); 二.立即执行函数的参数 可以给立即执行函数传递参数,例如   (function(who, when) {     cons…
1.模板语言变量 前端html页面中展示 {{ nodeIp }} 2.js变量引用模板语言变量 把模板语言变量传递给js,js去执行页面操作(变量的转换,只适用于字符串) var IP = "{{ nodeIp }}" 3.js自执行函数里调用变量 各种jquery里面找标签,根据某些内容找标签,内容是变量需要'+变量+'来使用 $('td div:contanins('+IP+')')…
js自执行函数的常见写法 2016-12-20 20:02:26 1.关于自执行函数 1.1 写自执行函数的好处:独立的作用域,不会污染全局环境 (function() { })(); 1.2 理解重点:函数的自执行过程 1.3 参考书籍:JS高级程序设计指南 1.4 给自执行函数加参数的好处:对于当前作用域中,如果将window传入,就不用依赖全局对象了,一直控制在局部作用域 (function(window,document) { var div=document.getElementByI…
js中立即执行函数的应用:应用到事件绑定上. 少说多做,直接运行代码(代码中有注释): <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>js立即执行函…
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible"…
js基础 目录 javascript基础 ESMAScript数据类型 DOM JS常用方法 回到顶部 javascript基础 常说的js包括三个部分:dom(文档document).bom(浏览器对象browser).ESMAScript(语法).js是esmascript的实现和扩展. ESMAScript数据类型 数据类型 七种数据类型:string,number,boolean,null,undefined,symbol (ECMAScript 2015新增),object. 六种基本…
一.js自执行函数 #(function(){alert(1);})(); (function(){ alert(1); } )(); 二.javascript同源策略 1. 什么是同源策略 理解跨域首先必须要了解同源策略.同源策略是浏览器上为安全性考虑实施的非常重要的安全策略. 何谓同源: URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源.  同源策略: 浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"docu…
由于自己js基础知识薄弱,很多js的知识还没有掌握,所以接下来会经常写一些关于js基础知识的博客,也算给自己提个醒吧. js自执行函数,听到这个名字,首先会联想到函数.接下来,我来定义一个函数: function aaa(a,b){ return sum = a + b } 定义了一个名为aaa的函数,在里面可以计算两个数的和.如果想执行它,就必须得调用它,并且还得给它传参: var aa = aaa(1,2) 这样就实现了一个函数的定义与调用,通过console.log我们可以看到sum实现了…
原文为 http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iife ------------------------ES6拓展篇 ----------ES6  let实际上为 JavaScript 新增了块级作用域. ----------块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了. // IIFE 写法 (function () { var tmp = ...…
看过jQuery源码的人应该知道,jQuery开篇用的就是立即执行函数.立即执行函数常用于第三方库,好处在于隔离作用域,任何一个第三方库都会存在大量的变量和函数,为了避免变量污染(命名冲突),开发者们想到的解决办法就是使用立即执行函数. 1.什么是立即执行函数(IIFE) 在了解立即执行函数之前先明确一下函数声明.函数表达式及匿名函数的形式,如下图: 接下来看立即执行函数的两种常见形式:( function(){…} )()和( function (){…} () ),一个是一个匿名函数包裹在一…
我们通常将JS代码写在一个单独的JS文件中,然后在页面中引入该文件.但是,有时候引入后会碰到变量名或函数名与其它JS代码冲突的问题.那么如何解决这个问题呢?作用域隔离.在JS中,作用域是通过函数来划分的,将JS代码封装到函数中进行调用可以避免变量名/函数名冲突的问题,但是这也并不是万无一失,因为封装函数本身有可能和其它函数重名,解决方案:自执行函数. 自执行函数是用一对圆括号将匿名函数包起来,加括号(传参)会立即执行.因为函数无名字,实现了作用域的绝对隔离和函数名的冲突问题.基本形式如下: (f…
5.1对于函数表达式,在后面加括号即可以让函数立即执行:例如下面这个函数,至于为什么加了括号就可以立即执行,我们可以这么理解,就是像fn1():这样写的话,函数 可以立即执行是没问题的,我们在经常会用到,那么对于函数表达式来说,fn1就是对后面的匿名函数的一个引用,因此在后面的匿名函数后直接加括号,自然也就可以立即执行     函数表达式立即执行 5.2但是对于下面这个函数,如果直接加()就会报错:如果按照上面的思路去理解,在匿名函数后面直接加上()应该是可以立即执行的,但是下面这个函数之所以会…
( function(){…} )() ( function (){…} () ) 是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此.要理解立即执行函数,需要先理解一些函数的基本概念. 函数声明.函数表达式.匿名函数 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnNam…
1.我们首先要搞明白:函数表达式和函数声明的区别. 函数表达式:既可以为匿名函数也可以有函数名,但是调用的时候都是通过函数左边的变量func来调用 var func = function(){ alert('xxx'); }; var b = new func(); 函数声明:必须有函数名 function func(){ alert('xxx'); } func(); 所以立即执行调用的函数表达式有一下几种 !function () { /* code */ } ();~function ()…
( function(){…} )()和( function (){…} () )是两种javascript立即执行函数的常见写法,一般理解是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,但事实原因并非如此,要理解立即执行函数,需要先理解一些函数的基本概念. 函数声明.函数表达式.匿名函数 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnName = fun…
前言 起因是我要在jquery的ajax中需要根据返回值来决定是否继续发起ajax请求,这是一个有条件的循环,符合条件就跳出.可以使用while循环的,但是想了想还是递归调用好用. 调用递归函数 递归函数大概就是这样的.不符合条件重新执行这个函数 function f() { // do something ){ } else{ f(); } } 圆括号运算符和自执行函数 js中圆括号运算符指 (),一般有两个作用. 1.在函数后面表示立即执行这个函数,如 f() 2.计算表达式,如 // 打印…
//方法一: //直接现定义函数 var time = window.setInterval(function(){ $('.lingdao_right').click(); },5000); //方法二: //执行已经有的函数 var time = window.setInterval('abc()',5000); //清除js自动执行 clearInterval(time); //time就是定义时的名称,如上…
// 下面2个括弧()都会立即执行 (function () { /* code */ } ()); // 推荐使用这个(function () { /* code */ })(); // 但是这个也是可以用的 和普通function执行的时候传参数一样,自执行的函数表达式也可以这么传参,因为闭包直接可以引用传入的这些参数,利用这些被lock住的传入参数,自执行函数表达式可以有效地保存状态. // 这个代码是错误的,因为变量i从来就没背locked住// 相反,当循环执行以后,我们在点击的时候i…
javascript  自执行函数 一.自执行函数几种写法: 写法一: ( function(){ //代码 } )(); 写法二: ( function(){ //代码 }()); 二.作用: 隔离全局变量或函数的干扰.…
JS是非强类型语言,且IDE也不够智能,所以经常会在语句结束时漏写了分号,一般情况下这是不影响运行的, 但如果后面跟上的是一段自执行的函数,就会报出 "..... is not function"的异常,例如: var a=1 (function(){alert(1);}()); 会报JS错误,原因是var a =1的后面没有加上;…
要在函数体后面加括号就能立即调用,则这个函数必须是函数表达式,不能是函数声明: Jslint推荐的写法: (function(){alert(1);}()); 针对函数声明,使用().!.+.-.=.void等运算符可将其转换为函数表达式: (function(a){ console.log(a); //firebug输出1,使用()运算符 })(1); (function(a){ console.log(a); //firebug输出2,使用()运算符 }(2)); !function(a){…
1.(function(){alert("1")})()(function(){alert("2")})()报错 2.(function(){alert("1")})();(function(){alert("2")})()正确 没有分号分隔挨着的函数,就会出错.应该跟JS的解析有关.   脚本压缩,前端页面要减少脚本数量和脚本大小,所以要把一类的脚本压缩在一起,为了避免压缩时前一个脚本没有写最后一个分号而导致压缩后脚本不能使…
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> //仅声明了函数,不会自执行,报错 function aa(){ console.log('aa'); }() //自执行情况 </s…
经常需要一个函数自执行,可惜这一种写法是错的: function(){alert(1);}();  原因是前半段“function(){alert(1);}”被当成了函数声明,而不是一个函数表达式,从而让后面的“();”变得孤立,产生语法错. 按上面的分析,这一段代码虽说没有语法错,但也是不符合我们的预期的,因为这个函数并没有自执行. function(){alert(1);}(1);  综上,症结在于,如何明确代码描述的是一个函数表达式,而不是函数声明语句. 正确的写法多种多样,也各有利弊:…
没有区别. 你需要明白 IIFE 的原理,我简单说一下: function foo() {...} // 这是定义,Declaration:定义只是让解释器知道其存在,但是不会运行. foo(); // 这是语句,Statement:解释器遇到语句是会运行它的. IIFE 并非必须,传统一点可以这么写: function foo() {...} foo(); 那么为什么要 IIFE? 传统的方法啰嗦,定义和执行分开写: 传统的方法直接污染全局命名空间(浏览器里的 global 对象,如 wind…
fnName(); function fnName(){     ... }//正常,因为‘提升’了函数声明,函数调用可在函数声明之前 fnName(); var fnName=function(){     ... }//报错,变量fnName还未保存对函数的引用,函数调用必须在函数表达式之后 var fnName=function(){     alert('Hello World'); }();//函数表达式后面加括号,当javascript引擎解析到此处时能立即调用函数 function…
一:整体写在一个括号中 代码如下: (function Show(){alert("hello");}()) 二:function函数整体外加括号 代码如下: (function Show(){alert("hello");})() 三:function前加一元运算符或者“void” !function Show(){alert("hello");}() 或者 void function Show(){alert("hello"…
(1)写法1 (function(){ //函数内容 })() (2)写法2 (function(){ //函数内容 }())…