zoukankan      html  css  js  c++  java
  • JavaScript-Function基础知识

    function
     
    1.  定义:一段预先设置的代码块,可以反复调用,根据输入参数的不同,返回不同的值;
     
    2.  函数的声明方法:
        (1)function 命令声明函数  function  fname(  ){    };
        (2)函数表达式: var  a=function( ){    } ;
        (3)Function 构造函数:var a=new Function(  )  ;    ——不常用;、
     
    3.  函数的覆盖:   函数若被重复声明,后面的声明会覆盖前面的声明;
     
    4.  函数的调用方法:(1)、()运算符    funcName( )  ,()可以加入函数的参数;
                                     (2)、 window . funcName( )
     
    5.return :   函数体内部可以加入return语句,return所带的表达式是函数返回值;
     
    6.不允许在非函数代码中声明函数,允许函数套函数;
     
    7.(1)name属性: 返回紧跟在function关键字之后的那个函数名;
     
       (2)length属性: 返回形参的个数;
     
       (3)arguments (类数组) :返回函数实参的个数;
                函数传参:形参,实参
                           function abc( 形参1,形参2,.......形参n){
                        ... 实参1,2,.....n
     判断实参arguments,且arguments 类似数组
     
    8.  函数的参数不是必需的,js允许省略参数;
     
    9.  自执行函数 :(1)  (function(){   code } )();
     
                                   eg:   ( kk=function(){
                    alert("测试自执行");
    })();
                 (2)(function(){   code } ());

    eg: ( LL=function(){
                    alert('22222');
    }()) ;

    (3) !function(){ code }();
                     eg: !function(){
                    alert('3333');
    }();

    10.  函数的作用域(scope):变量存在的范围;
        1、全局作用域            (整个window都可以调用)
    2、函数(局部)作用域 (指的是函数内部变量)
            (1)在函数外部声明的变量就是全局变量(global  variable);在函数内部可以使用全局变量(整个window都可以调用);
            (2)在函数内部定义的变量,外部无法读取,称为“局部变量”;
     
    11.闭包
        函数内部声明变量一定要用var,否则声明了一个全局变量;
        闭包本质:将函数内部和外部连接起来的桥梁,可以简单理解为函数套函数。
        闭包的用处: 1.读取函数内部变量
                            2.让这些变量始终保持在内存中,闭包使它的诞生环境一直存在
                            3.封装对象的私有属性和私有方法
      
     
     ---------------------------------------------以下内容来自搜索整理------------------------------------------------
    闭包原理及应用
     
    1.为什么需要闭包?
        保护函数内的变量安全。在内存中维持一个变量。
        通过保护变量的安全实现JS私有属性和私有方法(不能被外部访问)
     
     
    2.怎么释放被闭包的变量内存?
    在Javascript中,如果一个对象不再被引用,那么这个对象就会被GC回收。如果两个对象互相引用,而不再被第3者所引用,那么这两个互相引用的对象也会被回收。因为函数a被b引用,b又被a外的c引用,这就是为什么函数a执行后不会被回收的原因。
     
     
    3.代码中函数a的内部函数b,被函数a外面的一个变量c引用的时候,这就叫创建了一个闭包。有时候函数b也可以用一个匿名函数代替来返回,即return function(){};

    优点:1.保护函数内的变量安全,加强了封装性

         2.在内存中维持一个变量(用的太多就变成了缺点,占内存)
          闭包之所以会占用资源是当函数a执行结束后, 变量i不会因为函数a的结束而销毁, 因为b的执行需要依赖a中的变量。


    4.不适合场景:返回闭包的函数是个非常大的函数

    闭包的典型框架应该就是jquery了。
    闭包是javascript语言的一大特点,主要应用闭包场合主要是为了:设计私有的方法和变量。
    这在做框架的时候体现更明显,有些方法和属性只是运算逻辑过程中的使用的,不想让外部修改这些属性,因此就可以设计一个闭包来只提供方法获取。

    5.闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。

     
     
     
     
     <---------学习笔记,谢谢指正!-------->
     
  • 相关阅读:
    Markdown文档示例
    Python网络编程(一)
    JS之客户端检测
    MySQL 多表查询
    MySQL 单表查询
    MySQL 入门
    Python内置方法大全
    010 盒模型
    009 CSS选择器
    008 常用样式
  • 原文地址:https://www.cnblogs.com/AinyTong/p/6192664.html
Copyright © 2011-2022 走看看