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.闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。

 
 
 
 
 <---------学习笔记,谢谢指正!-------->
 

JavaScript-Function基础知识的更多相关文章

  1. 快速掌握JavaScript面试基础知识(三)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

  2. 快速掌握JavaScript面试基础知识(二)

    译者按: 总结了大量JavaScript基本知识点,很有用! 原文: The Definitive JavaScript Handbook for your next developer interv ...

  3. javascript的基础知识及面向对象和原型属性

    自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; cons ...

  4. JavaScript 之基础知识

    JavaScript 基础知识 JavaScript 是属于网络的脚本语言! JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用. JavaS ...

  5. JavaScript对象基础知识总结

    1.什么叫JavaScript对象? 定义:名值对的集合.简单的讲就是容纳属性值和属性值的容器,这些属性可以是无序的,基本上JavaScript中所有的事物都可以看成对象. 拓展:我们经常说,数组也是 ...

  6. JavaScript笔记——基础知识(一)

    <Script>标签属性 <script>xxx</script>这组标签,是用于在 html 页面中插入 js 的主要方法.它主要有以下 几个属性: charse ...

  7. JavaScript事件基础知识总结【思维导图】

    另外附上来自Nicholas C.Zakas<JavaScript高级程序设计 第3版>中的跨浏览器兼容EventUtil对象. var EventUtil = { //注册事件 addH ...

  8. JavaScript语言基础知识8

    这篇文章是对前面学习的知识进行总结: 1.JavaScript支持多种数据类型,如数值类型.字符串类型.布尔类型等. 2.在JavaScript中,字符串是用引號括起来的字符系列,转义字符能够用来表示 ...

  9. JavaScript笔记——基础知识(二)

    Function类型 函数function不需要返回类型(不是没有返回值),参数也不需要指定类型,更为特殊的是函数竟然是个类,可以通过new出来 var box= new Function('num1 ...

  10. 快速了解JavaScript的基础知识

    注释 单行注释: // 单行注释 多行注释: /* 多行 注释 */ 历史上 JavaScript 可以兼容 HTML 注释,因此 <!-- 和 --> 也可以是单行注释. x = 1; ...

随机推荐

  1. Python 3.x 连接数据库(pymysql 方式)

    ==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...

  2. 修改Firebug字体

    Firebug是一件非常好用的调试工具,然而默认的字体有些单调,设置里又没有更改的选项,那么字体到底能不能更改呢?这个问题困扰了我好久,直到今天我才偶然发现了解决方案. Firebug属于火狐的一个插 ...

  3. erlang 分布式数据库Mnesia 实现及应用

    先推荐一篇:mnesia源码分析(yufeng)   - linear hash   ETS/DETS/mnesia 都使用了linear hash算法 http://en.wikipedia.org ...

  4. ASP.NET SignalR入门

    前言 之前在培训ASP.NET WebAPI的时候有提过SignalR这个技术,但当时只是讲了是用来做什么的,并没有多说.因为自己也是画图找资料的时候见到的.后来当一直关注的前端大神贤心发布LayIM ...

  5. Windows Server 2008 R2 IIS7.5 部署 MVC HTTP 404.0 Not Found 错误

    如图 在Windows Server 2008 R2 IIS7.5 部署 MVC HTTP 404.0 Not Found 错误,在Win7环境下测试正常,在百度中查找相关解决方法,如修改配置文件等, ...

  6. 使用NPOI读取Excel报错ICSharpCode.SharpZipLib.Zip.ZipException:Wrong Local header signature

    写了一个小程序利用NPOI来读取Excel,弹出这样的报错: ICSharpCode.SharpZipLib.Zip.ZipException:Wrong Local header signature ...

  7. PHP 练习题

    Php基础知识测试题 本试题共40道选择题,10道判断题,考试时间1个半小时 一:选择题(单项选择,每题2分): 1. LAMP具体结构不包含下面哪种(A ) A:Windows系统 B:Apache ...

  8. MySQL延迟复制--percona-toolkit和MASTER TO MASTER_DELAY

    为了数据的安全,有的时候数据库需要延迟备份,这里说下两种延迟备份的方法. 一.借助工具. 实现环境: 192.168.189.143 (mysql主库) 192.168.189.144 (mysql备 ...

  9. DBNEWNAME工具介绍

    下面修改数据库的SID和db_name [root@oracle ~]# su - ora11g db11@oracle /home/ora11g$ db11@oracle  /home/ora11g ...

  10. Linux系统GCC常用命令和GCC编译过程描述

    前言: GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言.GCC 很快地扩展,变得可处理 C++.后来又 扩展能够支持更多编程语言,如Fortran. ...