搜尋

首頁  >  問答  >  主體

javascript - 讀js權威指南「作為值得函數」產生了疑惑,求釋疑

首先函數宣告和函數表達式理解的也不是很透徹,基本使用的都是函數聲明,也知道會前置這點。我印像中也不知道函數表達式有沒有函數名?因為也沒怎麼用過。今天看到了把函數賦給變量,發現和函數表達式似乎一樣,希望誰能夠解答下,謝謝。

        var s = function square (x){
                return x*x;
            }
            console.log(square(4));
            console.log(s(4))

上面的問題1,下面是問題2,為什麼上面的程式碼報錯“square is not defined”,而下面的程式碼正常的輸出,是因為上面的程式碼屬於函數表達式,所以不支援square(4)是嗎?寫到這兒突然想問,函數表達式就是在函數function前面同一行寫上<var xx =>,而把函數賦給變數只是在函數宣告的基礎上,另起一行<var xx = 函數名>,是這樣麼?求解,謝謝

        function square (x){
                return x*x;
            }
            var s = square;
            console.log(square(4));
            console.log(s(4))
曾经蜡笔没有小新曾经蜡笔没有小新2745 天前663

全部回覆(2)我來回復

  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-30 10:00:52

    關於問題二,
    表達式,就是直接建立一個函數作變量,外部這個函數不存在。
    而函數賦予變量,則是先有函數,再有變量。

    於是有了問題一的答案,s 本身是函數,外部是不存在這個函數的,於是報錯不存在。
    另外,應該是寫成:

    var s = function() {
    .......
    }

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-30 10:00:52

    兩個問題同答案。函數表達式的函數名稱是唯讀的,只能在這個函數內部引用,一般用作遞歸。

    回覆
    0
  • 取消回覆