函数基本
1.总体说明
- 函数是对象,可以动态创建,可以扩展,可作为参数和返回结果,可以拥有属性和方法
- 函数提供作用域,代码块不提供
2.函数声明
- 命名函数表达式
var funcName = function funcName(){
//TODO
};
- 匿名函数表达式
var funcName = function(){
//TODO
};
- 函数声明
function funcName(){
//TODO
}
【说明】
- 命名函数表达式和匿名函数表达式都必须以分号结束
- 函数声明不能用来分配变量和属性,只能在 函数体内部 或者 全局空间中使用
3.函数的命名属性
函数默认具有name属性,三种声明下:
- 命名函数表达式: name为funcName (一般变量和函数名相同,否则IE不能正确实现)
- 匿名函数表达式: 空字符串(其他浏览器)或者undefined(IE浏览器)
- 函数声明: name为funcName
4.函数提升(hoisting)
- 对于所有变量,在函数体的任何地方进行声明,都会被提升到函数顶部
- 函数声明会将整个函数在域内提升
function region(){
funcHoist(); //执行函数
//函数声明
function funcHoist(){
//TODO
}
}
- 函数表达式会将变量名提升,但函数本身不提升
function region(){
funcNoHoist(); //报错,类型为undefined
//函数声明
var funcNoHoist = function(){
//TODO
}
}