javascript - Js 函數宣告和函數表達式
世界只因有你
世界只因有你 2017-07-05 10:55:27
0
4
886

`alert(sum(10,10));
var sum=function(num1,num2){

   return num1+num2;

};`
為什麼報錯,不是有變數提升嗎

世界只因有你
世界只因有你

全部回覆(4)
phpcn_u1582

在我們寫js code 的時候,我們有2中寫法,一種是函數表達式,另外一種是函數宣告方式。
我們需要專注的是:

只有函數宣告形式才能被提升。

1、函數宣告形式 【成功】

function myTest(){ 
    foo(); 
    function foo(){ 
        alert("我来自 foo"); 
    } 
} 
myTest();

2、函數表達式方式【失敗】

function myTest(){ 
    foo(); 
    var foo =function foo(){     // 看这里
        alert("我来自 foo"); 
    } 
} 
myTest();

看我這篇:http://www.jianshu.com/p/85a2...

扔个三星炸死你

函數表達式不會提升。

看一遍《javascript高級程式設計》吧。

phpcn_u1582

聲明和表達式是不一樣的,聲明的話不光定義會提前,賦值也會提前賦好,而表達式不會,舉個栗子:

a();
function a(){}; //等同于
var a = function(){};
a();
///////对于表达式有
a();
var a = function(){}; //等同于
var a;
a();
a = function(){}; //简单来讲就是表达式的赋值必须要等程序运行到相关行的时候才会进行
ringa_lee

同樓上,你的函數創建方式是函數字面量形式,改成

alert(sum(10,10));
function sum(num1,num2){
    return num1+num2;
}

就行了

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板