首頁 > web前端 > js教程 > 主體

JavaScript函數宣告與變數宣告之間的差異分析

不言
發布: 2018-09-11 15:14:34
原創
1467 人瀏覽過

這篇文章帶給大家的內容是關於JavaScript函數宣告與變數宣告之間的差異分析,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

今天,又由一到題目引發了一場我跟JS基礎的較量:首先是

var getName = function(){alert(1)};
function getName(){alert(2)};

getName();// 1
登入後複製

or

function getName(){alert(2)};
var getName = function(){alert(1)};

getName();// 1
登入後複製

為什麼我調換宣告順序,結果還是輸出以var 形式宣告的函數的值?
有人回答我說"啊,變數提升呀...",我最開始的理解,就算變數提升,第一種情況提升之後,應該是這樣啊:

var getName;
getName = function(){alert(1)};
function getName(){alert(2)};
登入後複製

最後應該輸出2 才對啊(很理直氣壯)。
殊不知不只有var宣告才會提前,以function fn(){}這種形式宣告的函數,會被提升到作用域的最最頂部,然後再是變數的提升。
具體請看下面例子:

fn();//Uncaught TypeError: fn is not a function
var fn = function(){console.log(1)};
登入後複製

but

fn();//2
var fn = function(){console.log(1)};
function fn(){console.log(2)}
登入後複製

足以說明函數提升的更兇一些。

相關推薦:

javascript變數宣告實例分析_javascript技巧

JavaScript全域變數宣告與優缺點介紹

#

以上是JavaScript函數宣告與變數宣告之間的差異分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板