函数①函数声明与表达式
生活随笔
收集整理的這篇文章主要介紹了
函数①函数声明与表达式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
函數是JavaScript中的一等對象,這意味著可以把函數像其它值一樣傳遞。 一個常見的用法是把匿名函數作為回調函數傳遞到異步函數中。
函數聲明
function foo() {}上面的方法會在執行前被?解析(hoisted),因此它存在于當前上下文的任意一個地方, 即使在函數定義體的上面被調用也是對的。
foo(); // 正常運行,因為foo在代碼運行前已經被創建 function foo() {}函數賦值表達式
var foo = function() {};這個例子把一個匿名的函數賦值給變量?foo。
foo; // 'undefined' foo(); // 出錯:TypeError var foo = function() {};由于?var?定義了一個聲明語句,對變量?foo?的解析是在代碼運行之前,因此foo?變量在代碼運行時已經被定義過了。
但是由于賦值語句只在運行時執行,因此在相應代碼執行之前,?foo?的值缺省為?undefined。
命名函數的賦值表達式
另外一個特殊的情況是將命名函數賦值給一個變量。
var foo = function bar() {bar(); // 正常運行 } bar(); // 出錯:ReferenceErrorbar?函數聲明外是不可見的,這是因為我們已經把函數賦值給了?foo; 然而在?bar?內部依然可見。這是由于 JavaScript 的?命名處理?所致, 函數名在函數內總是可見的。
注意:在IE8及IE8以下版本瀏覽器bar在外部也是可見的,是因為瀏覽器對命名函數賦值表達式進行了錯誤的解析, 解析成兩個函數?foo?和?bar
轉載于:https://www.cnblogs.com/luckyxb/p/6398464.html
總結
以上是生活随笔為你收集整理的函数①函数声明与表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JPush (极光推送) For Xam
- 下一篇: Linux环境下手动配置sbt