JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() 的区别

之前一只搞不懂这个到底是怎么回事。现在看了卢伊的答案,自己总结一下。

[js]
//
//方法一

var foo = function(){

//code

}

//方法二

var function(){

//code

}
//
[/js]

使用第一种方法:

[js]
//
var FUNCTION_NAME = function(){  //code  }
//
[/js]

为  匿名函数  。使用匿名函数,编译以后变量声明FUNCTION_NAME会”被提前”,但是他的 赋值 (也就是code)并不会被提前。只有在调用的时候才会被初始化。

 

如果使用第二种方法:

[js]
//
function FUNCTION_NAME(){//code}
//
[/js]

这种方式,编译后函数声明和他的赋值都回被提前。

整个函数声明过程在整个执行前就完成了。所以只要处于同一个作用域,就可以访问到,即使在定义之前调用它也可以。

 

 

 

 

参考:

http://www.zhihu.com/question/19878052

http://www.bootcss.com/article/variable-and-function-hoisting-in-javascript/
http://bonsaiden.github.io/JavaScript-Garden/zh/#function    js秘密花园

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇