js 立即调用函数

        function makeCounter() {  //不能立即执行
            // 只能在makeCounter内部访问i
            var i = 0;

            return function () {
                console.log(++i);
            };
        }
        var counter = makeCounter(); //对象1
        counter(); // logs: 1 //立刻执行
        counter(); // logs: 2
        var counter2 = makeCounter(); //对象2
        counter2(); // logs: 1
        counter2(); // logs: 2

        var foo = function () { console.log("/* code */") }; //直接运行不了
        var foo = function () { console.log("/* code */") }();//直接运行

        function ff(){ /* code */ }(); // SyntaxError: Unexpected token  出错
        function ff() { console.log("/* code */") } (1); // 式子无异常,无输出
        function foo() { console.log("/* code */")};
                (1);  //无报错  无输出

        (function () { console.log("/* code */") }()); // 推荐使用这个             直接输出
        (function () { console.log("/* code */") })(); // 但是这个也是可以用的     直接输出

        var i = function () { console.log("/* code */") }(); //直接输出
        true && function () { console.log("/* code */") }(); //直接输出
        0, function () { console.log("/* code */") }();  //直接输出

        !function () { console.log("/* code */") }();//直接输出
        ~function () { console.log("/* code */") }();//直接输出
        -function () { console.log("/* code */") }();//直接输出
        +function () { console.log("/* code */") }();//直接输出

        new function () { console.log("/* code */") };//直接输出
        new function () { console.log("/* code */") }();//直接输出

        function ff() {
            new function () { console.log("/* code */") };
            !function () { console.log("/* code */") }();
        }
        ff();  直接输出
  !function () { console.log("/* code */1") }(console.log("/* code */2"));//直接输出  先执行2 在执行1
时间: 2024-12-11 11:18:10

js 立即调用函数的相关文章

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关键字声明一个函数,但未给函数命名,最后将匿名函数赋予

js中调用函数时加不加括号的问题

其实总结起来如下:函数只要是要调用它进行执行的,都必须加括号.此时,函数()实际上等于函数的返回值.当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码.不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码.它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行. 所以一般时候我们都是采用的是无括号的原因.这也是由于括号的二义性,因为括号是"函数调用运算符",相当于在执行这样

让js中的函数只有一次有效调用的三种常用方法

如何让js中的函数只被有效执行一次,请看下面的三种常用方法. 1. <script> window.onload = function () { function once(fn) { var result; return function() { if(fn) { result = fn.apply(this, arguments); fn = null; } return result; }; } var callOnce = once(function() { console.log('

Js 使用new关键字调用函数和直接调用函数的区别

最近开始学习js,在看到书上的一个例子时,引发了我的一系列思考: 书上例子: function Person(name,age,job){ var o =new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return  o; } var friend=new Person("Nicholas",29,"Software Engineer&quo

js new一个函数和直接调用函数的差别

用new和调用一个函数的差别:假设函数返回值是一个值类型(Number.String.Boolen)时,new函数将会返回这个函数的实例对象.而假设这个函数的返回值是一个引用类型(Object.Array.Funtion)时,new函数和直接调用函数的结果同样.測试代码例如以下: <script type="text/javascript"> /*//工厂模式 function Person(name,age) { var o = new Object(); o.name

JS的三种使用方式/CSS的三种使用方式/JS中的DOM事件模型/JS中匿名函数的书写及调用/媒体查询@media的三种使用方式

一.JS的三种使用方式 1.html标签中内嵌JS(不提倡使用.)                <button onclick="javascript:alert('你真点啊.')" > 有本事点我呀!!!!</button>                                2.HTML页面中直接使用JS:                <script type="text/javascript">        

js new一个函数和直接调用函数的区别

用new和调用一个函数的区别:如果函数返回值是一个值类型(Number.String.Boolen)时,new函数将会返回这个函数的实例对象,而如果这个函数的返回值是一个引用类型(Object.Array.Funtion)时,new函数和直接调用函数的结果相同.测试代码如下: <script type="text/javascript"> /*//工厂模式 function Person(name,age) { var o = new Object(); o.name =

254 在js调用函数时,传递变量参数时, 是值传递还是引用传递

问题: 在js调用函数时,传递变量参数时, 是值传递还是引用传递 理解1: 都是值(基本/地址值)传递 理解2: 可能是值传递, 也可能是引用传递(地址值) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>02_关于数据传递问题</title> </head> <body> <

JS调用函数时候加括号与只写函数名字的区别 fn与fn()的区别

经常见插件里面函数调用的时候只写个函数名字,不写函数参数,甚至连括号也不写,比如说: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title></title> 6 <script type="text/javascript"> 7 function a1(){ 8 alert('a'); 9 re