2、函数 面向对象

3.2、函数
<script>
// 普通函数
function func() {
alert("Hello Shuaige")
}

// 定义一个可传参数的函数
function func(arg) {
alert(arg)
}
func('Superman')

// 自执行函数,顾名思义,定义好之后可以自动执行
(function f3(arg) {alert(arg)})("Shuaige is good man");


// 匿名函数,用处不是很大 了解就行
var a = function() {
alert('meinv');
};
a();

</
script>

注意: 对于JavaScript中函数参数实际参数 的个数可能 小于形式参数的个数,函数内的特殊值arguments中封装了所有实际参数


2、作用域

JavaScript中每个函数都有自己的作用域,当出现函数嵌套时,就出现了作用域链。当内层函数使用变量时,会根据作用域链从内到外一层层的循环,如果不存在,则异常。

切记:所有的作用域在创建函数且未执行时候就已经存在。


更多:http://www.cnblogs.com/wupeiqi/p/5649402.html   【这个好,得看】

代码展示: 
function f2(){ var arg= [11,22]; function f3(){ console.log(arg); } arg = [44,55]; return f3; } ret = f2(); ret();

注:声明提前,在JavaScript引擎“预编译”时进行。




3、闭包

    「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

闭包是个函数,而它「记住了周围发生了什么」表现由「一个函数」体中定义了「另个函数」。

由于作用域链只能从内向外找,默认外部无法获取函数内部变量闭包,在外部获取函数内部的变量


function f2(){
var arg= [11,22];
function f3(){
return arg;
}
return f3;
}

ret = f2();
ret();

</script>

















GitHub:https://github.com/ju-do-it
个人博客:https://zhangju.lookdoc.cn
博客园:https://www.cnblogs.com/zhangju
Copyright ©2020 Ju-do-it
【转载文章务必保留出处和署名,谢谢!】
原文地址:https://www.cnblogs.com/zhangju/p/5789813.html