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. java的关闭钩子(Shutdown Hook)

    Runtime.getRuntime().addShutdownHook(shutdownHook);    这个方法的含义说明:        这个方法的意思就是在jvm中增加一个关闭的钩子,当jv ...

  2. java并行计算Fork和Join的使用

    Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题.Fork/Join采用的是分治法,Fork是将一个大任务拆分成若干个子任务,子任务分别去计算,而J ...

  3. java+eclipse+selenium环境搭建

    这几天在学selenium,大头虾的我.安装环境还是遇到了挺多问题,赶紧来记录下.不然下次又...(参考虫师的<Selenium2 Java自动化测试实战>),就随便写写加深下自己的印象. ...

  4. SQL 统计两个表的数据,按同一日期分组

    思路:把两个表的数据按日期整合到临时表在按日期分组,求和. 例子: SELECT t.dateTime AS '日期',SUM(t.money) AS '表1利息',SUM(t.interest) A ...

  5. BFS_Maze_求解迷宫最短路径

    /* 10 10 #.######.# ......#..# .#.##.##.# .#........ ##.##.#### ....#....# .#######.# ....#..... .## ...

  6. 【转】Windows下使用libsvm中的grid.py和easy.py进行参数调优

    libsvm中有进行参数调优的工具grid.py和easy.py可以使用,这些工具可以帮助我们选择更好的参数,减少自己参数选优带来的烦扰. 所需工具:libsvm.gnuplot 本机环境:Windo ...

  7. MYsql 数据库密码忘记(Linux)

    在Linux 上面装上了 Mysql 数据库,但是发现密码忘了,悲催,解决方法跟Window系统下一样的, 不管是哪个操作系统处理的思路是相同的,就是首先要把mysql的权限去掉,这样即使忘了密码,不 ...

  8. Swift - UIView,UItableView,Cell设置边框方法

    // 设置边框的宽度 cell.layer.borderWidth = 1 // 设置边框的颜色 cell.layer.borderColor = UIColor.blackColor().CGCol ...

  9. unity播放视频

    方法一: 1.用一个Quad(或者其他的)做屏幕,调整摄像机位置和它的大小,使它显示在你想要的区域 2.将视频拖入Unity,拖入,拖入,拖入:不是将视频直接copy到指定的文件夹中 3.将下面脚本挂 ...

  10. Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较

    转载自:http://www.ylzx8.cn/windows/delphi/73200.html 本人在做一个测试,服务器是IOCP的,我假定最大链接数是50000个. 测试背景:如果每个链接之间的 ...