1.1 js中函数声明解析(学习笔记)
误区:定义函数比声明函数更丰富,定义包含实现
**1.1.1函数的分类
- 函数声明式 :使用function声明函数,并指定函数名。
- 函数表达式:使用function声明函数,但未指定函数名。
函数表达式2.匿名函数,匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或创建闭包等等。 - 立即执行函数,两种写法。立即执行函数里面的函数必须是函数表达式 (function(){})()
(function(){}())
(function(){}())这样写的好处是在内部定义的变量不会跟外部的变量有冲突,达到保护内部变量的作用。 - 回调函数 此函数比较特殊,一般属于异步。例如 setTimeout(function, xx)
1.2函数声明与函数表达式的区别
1.调用位置
函数声明可以在当前作用域下提前调用,因为 函数提升即将函数声明提升到它所在作用域的最开始的部分(js预解析函数提升)
函数表达式只能在声明之后调用
2.调用方法区别
函数声明必须有函数名。【通过函数名调用】
函数表达式中的函数名可选的(所以称为匿名函数)(更像js语句的一部分)
比如赋值表达式等号右边,作为函数参数,立即执行函数。这三种情况都可以不使用函数名。【1.作为其他函数的参数,通过参数名访问。2.函数赋值给一个变量,通过变量名访问。】
3.使用范围
函数声明只能作用于全局中,或者镶嵌在其他函数中。不能出现在循环,条件中(待确认)(部分探讨见1.4)
函数表达式可以直接在函数后接()调用