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内部变量的作用。

  • 相关阅读:
    python同时继承多个类且方法相同
    django扩展用户继承AbstractUser
    python中单下划线和双下划线
    django扩展用户一对一关联
    django拓展用户proxy代理
    django 内置User对象基本使用
    selenium+pthon之二----了解浏览器的相关操作方法
    最近很燥,决心沉下心来学习!
    selenium+pthon之一----环境搭建与脚本实例
    Fiddler入门三
  • 原文地址:https://www.cnblogs.com/yanze/p/6347775.html
Copyright © 2011-2022 走看看