函数声明,表达式,闭包

Posted on 2015-08-28 15:44  !sylar  阅读(134)  评论(0)    收藏  举报

函数声明和函数表达式

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

函数表达式:function 函数名(可写可不写)(){...};

根据上下文来判断是否是函数表达式

var a=fucntion aaa(){....} 命名函数表达式

var a=function (){.....}//匿名函数表达式

(function(){.....})//函数表达式

~fucntion(){}///// !function(){....}//在函数前加上位运算符,+,-,!,~

区别

  • 函数表达式后面加括号可以直接来执行,函数声明不可以;
  • 函数声明是被提前解析出来的
  • 命名函数表达式是不推荐来写的,只做了解

闭包

什么是闭包

1.函数嵌套函数;2.内部函数可以引用外部函数的参数和变量3.参数和变量不会被垃圾回收机制收回

闭包有什么好处

1.希望一个变量长期驻扎在内存中2.避免全部变量的污染3.私有成员的存在

怎么来用闭包

1.模块化代码;2.

 

使用递归快速排序

  • <script>
            function quickSort(arr){
                if(arr.length<=1)
                {
                    return arr;
                }
                var num=Math.floor(arr.length/2);
                var numValue=arr.splice(num,1)
                var left=[];
                var right=[];
                for(i=0;i<arr.length;i++)
                {
                    if(arr[i]<numValue)
                    {
                        left.push(arr[i])
                    }
                    else{
                        right.push(arr[i])
                    }
                    
                }
                return quickSort(left).concat([numValue],quickSort(right))
            }
            alert(quickSort([1,4,2,7,324,12,32,43,11]))
        </script>
    View Code