function表达式和function语句
首先我们看下什么是function表达式和function语句:1
2function f() {} //function语句
var f = function() {} //function表达式
javascript语言中的function语句在解析时会发生被预先加载的情况。这意味着不管function被放置在哪里,它都会被移动到被定义时所在的作用域顶层,造成了javascript函数不必先声明后使用的特性,但这种特性也导致了javascript的混乱。下面看两段代码:
1 | var a=10; |
继续看一段代码:1
2
3
4
5
6
7
8
9
10
11
12
13var a=10;
console.log(a); //10
var a1=function(){
a=2;
}
a1();
console.log(a); //2
var a1=function(){
a=4;
}
a1();
console.log(a); //4
推荐使用第二种形式,因为它能明确表示f是一个包含一个函数值的变量。要用好JavaScript这门语言,理解函数就是数值是很重要的。
那么,你能说出下面代码的答案吗?1
2
3
4
5var value = 1;
function value(){
return 1;
}
console.log(typeof value);
这一段呢?1
2
3
4
5var value = 1;
var value = function(){
return 1;
}
console.log(typeof value);
提示:
- 函数声明优先,但是赋值又是另外一个操作了;
- function表达式包括了声明和赋值两个步骤。
感谢您的阅读,有不足之处请在评论为我指出。
版权声明:本文为博主原创文章,未经博主允许不得转载。本文地址 http://yangyuji.github.io/2015/06/19/javascript-function/