在JavaScript中,函式是經常用到的,在實際開發的時候,我想很多人都沒有太在意函式的宣告與函式運算式的區別,但是呢,這種細節的東西對于學好js是非常重要的,
函式宣告與函式運算式用代碼寫出來是這樣的:
//函式宣告
function say(){
console.log("函式宣告")
}
//函式運算式
var say1 = function(){
console.log("函式運算式")
}
那我們來看看,這兩種方式到底有什么不同呢?
首先,在函式呼叫方面,看下面的代碼
say();
//函式宣告
function say(){
console.log("函式宣告")
}
這樣的執行結果是什么呢?答案是列印出“函式宣告”,那你看下面的代碼
say1();
//函式宣告
function say(){
console.log("函式宣告")
}
//函式運算式
var say1 = function(){
console.log("函式運算式")
}
這樣的執行結果是什么呢?注意,我們是呼叫的函式運算式,這樣的結果是會報錯,為什么呢?
一起來看看,首先我們先說第一種,函式宣告的呼叫,函式宣告的呼叫這個其實不用講你就知道,函式宣告了嘛,哪里都可以呼叫的(function會有預決議,預決議之后函式就存在了,所以那里都能呼叫它了),至于下面這種函式運算式,為什么在函式運算式上面執行會報錯呢?來看看下面的代碼
console.log(a)
var a=1;
這段代碼的執行結果是什么呢?undefined,這是不是很像我們的函式運算式了,其實,如果說我們在函式運算式之前也列印一下這個say1(),結果也是undefined,原因就是帶有var 的變數,當然這里說的是全域變數,它在預決議的時候會有一個變數提升,變數提升是什么意思呢,看上面這段代碼,其實就相當于下面這段代碼
var a;
console.log(a);
a=1;
現在知道了吧,a這個變數是存在的,并且初始化成了一個undefined,所以說我們的函式運算式也是一樣的,它也有變數提升,在將函式賦值給你定義的變數之前,呼叫就會報它不是函式的錯,而列印出來就是undefined,是不是很好理解呢,學到了嗎?
如果你覺得對你有幫助的話,記得點個關注哦,我會持續更新更多你想知道的,謝謝!
微信搜索:全堆疊學習筆記
微信公眾號

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/142385.html
標籤:JavaScript
下一篇:NPM: 日常開發環境配置
