JS自执行函数的几种写法】的更多相关文章

一:整体写在一个括号中 代码如下: (function Show(){alert("hello");}()) 二:function函数整体外加括号 代码如下: (function Show(){alert("hello");})() 三:function前加一元运算符或者“void” !function Show(){alert("hello");}() 或者 void function Show(){alert("hello"…
经常需要一个函数自执行,可惜这一种写法是错的: function(){alert(1);}();  原因是前半段“function(){alert(1);}”被当成了函数声明,而不是一个函数表达式,从而让后面的“();”变得孤立,产生语法错. 按上面的分析,这一段代码虽说没有语法错,但也是不符合我们的预期的,因为这个函数并没有自执行. function(){alert(1);}(1);  综上,症结在于,如何明确代码描述的是一个函数表达式,而不是函数声明语句. 正确的写法多种多样,也各有利弊:…
匿名函数没有实际名字,也没有指针,怎么执行? 关于匿名函数写法,很发散~ +号是让函数声明转换为函数表达式.汇总一下 最常见的用法: 代码如下: (function() {  alert('water');  })();    当然也可以带参数: 代码如下: (function(o) {  alert(o);  })('water');    想用匿名函数的链式调用?很简单: 代码如下: (function(o) {  console.log(o);  return arguments.call…
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立即执行函数可以让你的函数在创建后立即执行,js立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行. 一.JS立即执行函数的写法 方式1.最前最后加括号 (function(){alert(1);}()); 方式2.function外面加括号 (function(){alert(1);})(); 方式3.function前面加运算符,常见的是!与void !function(){alert(1);}(); void…
看过jQuery源码的人应该知道,jQuery开篇用的就是立即执行函数.立即执行函数常用于第三方库,好处在于隔离作用域,任何一个第三方库都会存在大量的变量和函数,为了避免变量污染(命名冲突),开发者们想到的解决办法就是使用立即执行函数. 1.什么是立即执行函数(IIFE) 在了解立即执行函数之前先明确一下函数声明.函数表达式及匿名函数的形式,如下图: 接下来看立即执行函数的两种常见形式:( function(){…} )()和( function (){…} () ),一个是一个匿名函数包裹在一…
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基础知识薄弱,很多js的知识还没有掌握,所以接下来会经常写一些关于js基础知识的博客,也算给自己提个醒吧. js自执行函数,听到这个名字,首先会联想到函数.接下来,我来定义一个函数: function aaa(a,b){ return sum = a + b } 定义了一个名为aaa的函数,在里面可以计算两个数的和.如果想执行它,就必须得调用它,并且还得给它传参: var aa = aaa(1,2) 这样就实现了一个函数的定义与调用,通过console.log我们可以看到sum实现了…
一.JS立即执行函数的写法 方式1.最前最后加括号 (function(){alert(1);}()); 方式2.function外面加括号   (function(){alert(1);})(); 方式3.function前面加运算符,常见的是!与void   !function(){alert(1);}(); void function(){alert(2);}(); 二.立即执行函数的参数 可以给立即执行函数传递参数,例如   (function(who, when) {     cons…
原文:javascript立即调用的函数表达式N种写法(第二篇) 上一篇博客我谈到将函数声明转换为函数表达式最常见的一种写法是:通过括号()将匿名函数声明转换为函数表达式即(function(){})(); 言外之意就是还有其他方式,记住:任何消除函数声明和函数表达式间歧义的方法,都可以被解析器正确识别!它们可以分为5类,超过10多种: (function(){})(); //最常见的写法 下文没特殊指明就是指它 (function(){}); //容易与上面的混淆 [function()()]…
一.js自执行函数 #(function(){alert(1);})(); (function(){ alert(1); } )(); 二.javascript同源策略 1. 什么是同源策略 理解跨域首先必须要了解同源策略.同源策略是浏览器上为安全性考虑实施的非常重要的安全策略. 何谓同源: URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源.  同源策略: 浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"docu…
swap 函数的四种写法 (1)经典型 --- 嫁衣法 void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } (2)经典型改进版 --- 泛型法 void swap(void *a, void *b, size_t size) { unsigned char *p = (unsigned char *)a; unsigned char *q = (unsigned char *)b; unsigned cha…
js function定义函数的4种方法 1.最基本的作为一个本本分分的函数声明使用. 复制代码代码如下: 复制代码代码如下: function func(){} 或 var func=function(){};  2.作为一个类构造器使用: 复制代码代码如下: 复制代码代码如下: function class(){} class.prototype={}; var item=new class();  3.作为闭包使用: 复制代码代码如下: 复制代码代码如下: (function(){ //独…
1.模板语言变量 前端html页面中展示 {{ nodeIp }} 2.js变量引用模板语言变量 把模板语言变量传递给js,js去执行页面操作(变量的转换,只适用于字符串) var IP = "{{ nodeIp }}" 3.js自执行函数里调用变量 各种jquery里面找标签,根据某些内容找标签,内容是变量需要'+变量+'来使用 $('td div:contanins('+IP+')')…
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"…
试用几种方法实现swap函数,比较效率高低. 首先说结果,最快的是赋值交换. 原因分析 gcc开启O2优化后,三个函数的汇编代码一样.是的,除了第一行的文件名,一模一样. 附代码 void swap1(int *a, int *b) { //赋值交换 int temp; temp = *a; *a = *b; *b = temp; } void swap2(int *a, int *b) { //加减法(可能导致int溢出),乘除法(溢出,除数不能为零) *a = *a + *b; *b = *…
C++ 常用编程--Swap函数有几种写法? 在说C++模板的方法前,我们先想想C语言里面是怎么做交换的. 举个例子,要将两个int数值交换,是不是想到下面的代码: void swap(int&a , int &b) { int t = a; a=b; b=t; } 如果要求不用临时变量,可考虑异或的方式. void swap(int&a,int&b) { if (&a != &b) { a ^= b; b ^= a; a ^= b; } } 整型数比较容易…
原文为 http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iife ------------------------ES6拓展篇 ----------ES6  let实际上为 JavaScript 新增了块级作用域. ----------块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了. // IIFE 写法 (function () { var tmp = ...…
5.1对于函数表达式,在后面加括号即可以让函数立即执行:例如下面这个函数,至于为什么加了括号就可以立即执行,我们可以这么理解,就是像fn1():这样写的话,函数 可以立即执行是没问题的,我们在经常会用到,那么对于函数表达式来说,fn1就是对后面的匿名函数的一个引用,因此在后面的匿名函数后直接加括号,自然也就可以立即执行     函数表达式立即执行 5.2但是对于下面这个函数,如果直接加()就会报错:如果按照上面的思路去理解,在匿名函数后面直接加上()应该是可以立即执行的,但是下面这个函数之所以会…
( function(){…} )() ( function (){…} () ) 是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达到函数定义后立即执行的目的,后来发现加括号的原因并非如此.要理解立即执行函数,需要先理解一些函数的基本概念. 函数声明.函数表达式.匿名函数 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明. 函数表达式 var fnNam…
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hello var'; }; function sayHello(name) { return 'Hello function'; }; sayHello(); 最终的输出为 > "Hello var" 为什么会这样,实际上JavaScript的是按如下顺序解析的. function sa…
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…
javascript  自执行函数 一.自执行函数几种写法: 写法一: ( function(){ //代码 } )(); 写法二: ( function(){ //代码 }()); 二.作用: 隔离全局变量或函数的干扰.…
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子:   var sayHello = function() { return 'Hello var'; }; function sayHello(name) { return 'Hello function'; }; sayHello();   最终的输出为   > "Hello var"   为什么会这样,根据 StackOverFlow 的解释,实际上Java…
1.常规写法 function fnName(){ console.log("常规写法"); } 2.匿名函数,函数保存到变量里 var myfn = function(){ console.log("匿名函数,函数保存到变量里"); } 3.如果有多个变量,可以用对象收编变量 3.1 用json对象 var fnobject1={ fn1:function(){ console.log("第一个函数"); }, fn2:function(){…
前言 起因是我要在jquery的ajax中需要根据返回值来决定是否继续发起ajax请求,这是一个有条件的循环,符合条件就跳出.可以使用while循环的,但是想了想还是递归调用好用. 调用递归函数 递归函数大概就是这样的.不符合条件重新执行这个函数 function f() { // do something ){ } else{ f(); } } 圆括号运算符和自执行函数 js中圆括号运算符指 (),一般有两个作用. 1.在函数后面表示立即执行这个函数,如 f() 2.计算表达式,如 // 打印…
我们通常将JS代码写在一个单独的JS文件中,然后在页面中引入该文件.但是,有时候引入后会碰到变量名或函数名与其它JS代码冲突的问题.那么如何解决这个问题呢?作用域隔离.在JS中,作用域是通过函数来划分的,将JS代码封装到函数中进行调用可以避免变量名/函数名冲突的问题,但是这也并不是万无一失,因为封装函数本身有可能和其它函数重名,解决方案:自执行函数. 自执行函数是用一对圆括号将匿名函数包起来,加括号(传参)会立即执行.因为函数无名字,实现了作用域的绝对隔离和函数名的冲突问题.基本形式如下: (f…
//方法一: //直接现定义函数 var time = window.setInterval(function(){ $('.lingdao_right').click(); },5000); //方法二: //执行已经有的函数 var time = window.setInterval('abc()',5000); //清除js自动执行 clearInterval(time); //time就是定义时的名称,如上…