关于函数

函数声明
 
js里一切功能始于数据终于数据。处理数据的工具就是函数。
 
函数,使用时先声明,在计算机内部分配空间的时候 相当于声明了一个变量,只是函数的形式。
 
在调用的时候才执行,函数内部的变量和参数,在调用时赋值,调用结束则销毁。函数的生命周期是每一次调用开始到结束。
 
 
函数的分类
 
1.有名函数 
 
function fn(){ }
 
 
2.匿名函数表达式
 
let fn = function(){};
 
 
3.创建有名函数表达式
 
var fn1=function xxcanghai(){};
 
注意:具名函数表达式的函数名只能在创建函数内部使用
 
 
4.自执行匿名函数
 
匿名函数不需要特意去调用,即声明即执行。
 
匿名函数的写法有很多种,匿名函数看做是一个表达式,只有表达式才能立即执行
 
;function(){/*...*/}();
 
(function foo(){/*...*/}());
 
(function foo(){/*...*/})();
 
!function foo() {/*...*/}();
 
+function foo() {/*...*/}();
 
-function foo() {/*...*/}();
 
~function foo() {/*...*/}();
 
 
 
5.构造函数Function
 
 
6.其它创建函数的方式
 
setTimeout\ setInterval 等形式创建
 
 
 
函数的默认值
 
this
 
每个函数默认返回的是undefined; 每个函数都有一个this,代表函数在执行的时候指向。
函数中的this指向详情说明,在this指向一文中进行说明。
 
return
 
每个函数都有return 属性,不写默认值的返回值是undefinde,。
 
 
return 后边没有变量的时候是跳出当前执行的函数。
 
return 后边有值,就是执行函数时返回的值,可以是任何类型。如果返回的是函数,有可能形成闭包。
 
 
arguments
 
arguments是一个类数组,是关于参数的默认值。在es5中
 
 
 
函数的参数
 
定义函数时的参数是形参, 执行时传入的参数是实参。
 
如果函数的参数依然是函数,就称为回调函数。
 
函数参数的默认值是arguments
 
 
 
函数的扩展 - 闭包
 
详细内容参考闭包总结一章。
 
 
函数的上下文和执行顺序,函数作用域链
 
(相对于整个js程序而言)
 
1.函数先声明,在浏览器编译的时候,会把声明的函数提到当前作用域顶部
2.函数的执行的顺序,是声明函数在js文件中调用的顺序
3.函数名和变量名相同的时候,函数的优先级高于变量
 
只是在es5中,es6是会报错的
 
var a = 10;
x();
function x() {
    alert(a);
    var a = 20;
}
alert(a);
 
打印出
// undefiend
// 10
 
var a = 10;
x();
function x() {
    alert(a);
     a = 20;
}
 
打印出
// 10
// 20
 
 
x();
function x() {
    alert(a);
    var a = 10;
}
alert(a);
 
打印出
// undefined
// 第二次没有结果, 在window没有这个参数
 
只要弄清楚函数和变量同名时,函数的优先级高于变量,之后再出现就是重新赋值,这也说明一个问题,函数在声明的时候,相当于一个变量。
 
 
 
~~~总之函数是非常有潜力的东西,函数也基本撑起了js的整片天,其中相互嵌套,反复调用也是非常有意思的~~
posted @ 2019-04-18 12:01  之乐之  阅读(168)  评论(0编辑  收藏  举报