{JS 函数}

2016-12-01  本文已影响12人  jrg_memo

声明&表达式

函数声明
function print(s) {
console.log(s);
}
函数表达式
var print = function(s) {
console.log(s);
};

函数声明 作用域内调用
函数表达式 只在声明后调用

函数声明整个函数代码块提升至作用域最顶部
函数表达式 只提升 被声明的变量,不提升函数

函数声明 可加可不加
函数表达式 必须加分号来表示结束

声明前置

因为JS引擎的工作方式是先解析代码获取所有被声明的变量,然后逐行运行。
所以所有的变量的声明语句都会被提升到代码顶部

因为JS引擎 将函数名视同变量名,所以
采用function命令声明函数时,整个函数被提升到代码头部
采用赋值语句声明函数时,函数在原位置被声明。

arguments

重载

允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数必须不同

解决功能类似处理的数据类型不同的问题。

在JavaScript中没有函数重载的概念,函数通过名字确定唯一性,参数不同也被认为是相同的函数,后面的覆盖前面的,但是可以用arguments模拟函数重载
function foo() {
if(arguments.length == 1) {
alert(arguments[0] + 1);
} else if(arguments.length == 2) {
alert(arguments[0] + 2);
}
}
foo(1); //输出 “2”
foo(2, 3); //输出 “4”

立即执行函数表达式

一种声明之后就立即进行该函数执行操作的函数
声明一个匿名函数并立刻调用

1 不必为函数命名,避免了污染全局变量;
2 函数内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。
Tip 通常只对匿名函数使用

作用域链

上一篇 下一篇

猜你喜欢

热点阅读