zoukankan      html  css  js  c++  java
  • 自执行函数笔记

    了解自执行函数之前,首先得理清一下函数的基本概念

    1.函数声明:function aa(){};

    使用function关键字声明一个函数并指定函数名

    2.函数表达式:var a= function(){};

    使用function关键字声明一个函数并将其赋予一个变量

    (

    值得注意的是 var a= function b(){}这样的形式统一按照var a= function (){}处理,如果调用b(),会抛出异常!

    )

    3.匿名函数: function(){}

    匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等,它属于一种函数表达式

    函数声明与函数表达式的区别如下:

    1.Javascript引擎在解析js代码时,会优先解析函数声明所创建的函数,即"函数声明提升"现象,而函数表达式则会在Javascript引擎执行到它所在的行时才会进行解析;

    2.函数表达式创建的变量在后面加上括号便立即调用此函数,如a(),函数声明的调用方式是 函数名+();

    eg:

    a();
    function a(){
         console.log(1)
    };
    b();
    var b= function(){
         console.log(2)
    };

    输出:

    1

    报错,函数表达式不会提前解析

    接下来就可以介绍自执行函数了,一般它的格式如下:

    (function (a){}(a))或(function (a){})(a),那么它属于函数声明还是函数表达式?

    由上面的两种格式可知,函数对象后面直接机上括号就能执行,这种情况下,它属于函数表达式~

    函数表达式的格式:

    (function(a){
          console.log(a); 
        })(1);
         
        (function(a){
          console.log(a); 
        }(2));
         
        !function(a){
          console.log(a); 
        }(3);
        
        +function(a){
          console.log(a);
        }(4);
        
        -function(a){
          console.log(a); 
        }(5);

    输出:

    1

    2

    3

    4

    5

    由此可只在函数前加上!+ -等运算符或使用()都能将之转换为自执行函数,但一般情况下,习惯使用()

    自执行函数的一般用途:

    javascript中没用私有作用域的概念,如果在多人开发的项目上,你在全局或局部作用域中声明了一些变量,可能会被其他人不小心用同名的变量给覆盖掉,

    根据javascript函数作用域链的特性,可以使用这种技术可以模仿一个私有作用域,用匿名函数作为一个“容器”,

    “容器”内部可以访问外部的变量,而外部环境不能访问“容器”内部的变量,

    所以( function(){…} )()内部定义的变量不会和外部的变量发生冲突,俗称“匿名包裹器”或“命名空间”。

    JQuery使用的就是这种方法,将JQuery代码包裹在( function (window,undefined){…jquery代码…} (window)中,在全局作用域中调用JQuery代码时,可以达到保护JQuery内部变量的作用。

  • 相关阅读:
    Linux命令:mapfile
    Linux命令:logout
    行式数据库和列式数据库的浅析
    hadoop常见错误集锦
    hadoop环境搭建遇到问题集锦
    杀毒的一点学习
    powerdesigner的学习
    突然的想法
    shell脚本入门教程(转)
    java classpath深入详解(转)
  • 原文地址:https://www.cnblogs.com/yanze/p/6347775.html
Copyright © 2011-2022 走看看