匿名函数立即调用的函数表达式 -IIFE(Immediately-Invoked Function Expression)

javascript 匿名函数有哪几种执行方式:

( function() {}() );
( function() {} )();
[ function() {}() ];

~ function() {}();
! function() {}();
+ function() {}();
- function() {}();

delete function() {}();
typeof function() {}();
void function() {}();
new function() {}();
new function() {};

var f = function() {}();

1, function() {}();
1 ^ function() {}();
1 > function() {}();
// ...

!(function() {})();前面为什么要加~、!这些符号?

后面的()是执行一个函数,而(function() {})是一个执行表达式,返回一个匿名函数的引用。

在前面加上一元运算符是为了进行分隔。

否则如果在(function() {})();之前包含“未结束”的语句,还没有加一元运算符进行分隔的话,会报错。

提示缺少函数。

既然前面的一元运算符或者;不能被省略,那么(function() {})这个()能不能省呢?

如果是;function() {}()就不行了,会报语法错误,其它一元运算符可以,但是仍然建议加上()。

我们一般都使用 !function(){}();来进行函数立即调用。

时间: 2024-10-20 11:33:29

匿名函数立即调用的函数表达式 -IIFE(Immediately-Invoked Function Expression)的相关文章

js 立即调用函数 IIFE(Immediately Invoked Function Expression) 【转】

原文链接:https://www.cnblogs.com/ming-os9/p/8891300.html 1 (function(){...})() 3 (function(){...}()) 这是两种js立即执行函数的常见写法. 基本概念: 函数声明:function fname(){...}; 使用function关键字声明一个函数,再指定一个函数名. 函数表达式:var fname=function(){...}; 使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予

逆向知识十一讲,识别函数的调用约定,函数参数,函数返回值.

逆向知识十一讲,识别函数的调用约定,函数参数,函数返回值. 在反汇编中,我们常常的会看到各种的函数调用,或者通过逆向的手段,单独的使用这个函数,那么此时,我们就需要认识一下怎么识别函数了. 一丶识别__cdecl 函数(俗称C Call),函数参数,函数返回值 首先写一个C Call的函数 1.返回值 int类型, 参数int 类型 高级代码: int __cdecl MyAdd(int a,int b) { return a + b; } int main(int argc, char* ar

IIFE(Imdiately Invoked Function Expression 立即执行的函数表达式)

+function($){}(jQuery); 今天看到js代码里面有这个格式的代码,不知道啥意思,就去查了一下,我也是js小白.首先前面的+号,这个不是固定非要写+号,只要写一级运算符都可以.目的是为了引导解析器,指明运算符附近是一个表达式.+function($){}就是一个函数表达式,(jQuery)就是调用这个函数表达式并且jQuery是参数.(传参,为了避免$与其他库或者模板申明冲突,jQuery 作为参数传递). (function($){})(jQuery)  这种写法跟上面的那种

c++ 如何把this指针传入成员函数 像全局函数一样调用成员函数

测试这个功能的初衷是测试boost里面的bind boost::bind((&A::sum), &a, _1, _2) 上面的代码是我boost bind及多线程这篇博客里面的一行代码.我就想boost是怎么做到这样调用一个类的成员函数的.其实成员函数和全局函数无非就是差一个this指针参数.给传进去不就也可以调用了.然而并没有那么简单.看了boost的源码表示太长了.没怎么看懂 然后就自己写代码测试了一下.还用了汇编.. 代码参考  http://www.cppblog.com/woai

函数的返回值、函数的调用、函数的参数

1.函数的返回值 ''' 1.什么是返回值 返回值是一个函数的处理结果, 2.为什么要有返回值 如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值 3.函数的返回值的应用 函数的返回值用return去定义 格式为: return 值 --------(值可以是是以数据类型) 注意: 1.return是一个函数结束的标志,函数内可以有多个return, 但只要执行一次,整个函数就会结束运行------即函数下面有再多代码也不会被执行 2.return 的返回值无类型限制,

函数里面有函数叫函数的闭包:子函数可以调用父函数变量,如果子函数找不到变量,那么整条作用域链的变量都会被保存

1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 5 <title>无标题文档</title> 6 <script> 7 //作用域 8 var a=0; 9 10 function abc(){ 11 var a=1; 1

练手例子_main函数、调用其他函数、输入字符保存

# hello3.pyimport hello4 person = {'Alice': 13, 'Bob': 35, 'May': 56, 'Lin': 29}body_name = ['head', 'body', 'hand', 'leg', 'foot'] # 找出想要的字符串def number_name(): n = int(input('Input a number:\n')) if 0 < n < 5: print(body_name[n]) else: print("

java如何在函数中调用主函数的数组

import javax.swing.JOptionPane; public class Test { /** * @zdz */ public static void main(String[] args) { double aArray[]= new double[]{1,2,3,4,5}; printArray(aArray); } public static void printArray(double aArray[]) { String output=""; aArray[

daemon_init函数:调用该函数把普通进程转变为守护进程

#include <unistd.h> #include <syslog.h> #include <fcntl.h> #include <signal.h> #define MAXFD 64 extern int daemon_proc; /* defined in error.c */ int daemon_init(const char *pname, int facility) { int i; pid_t pid; if ( (pid = fork(