javascript - Js 函數(shù)聲明和函數(shù)表達式
問題描述
`alert(sum(10,10));var sum=function(num1,num2){
return num1+num2;
};`為什么報錯,不是有變量提升嗎
問題解答
回答1:在我們寫js code 的時候,我們有2中寫法,一種是函數(shù)表達式,另外一種是函數(shù)聲明方式。我們需要重點注意的是:
只有函數(shù)聲明形式才能被提升。
1、函數(shù)聲明形式 【成功】
function myTest(){ foo(); function foo(){ alert('我來自 foo'); } } myTest();
2、函數(shù)表達式方式【失敗】
function myTest(){ foo(); var foo =function foo(){ // 看這里alert('我來自 foo'); } } myTest();
看我這篇: http://www.jianshu.com/p/85a2...
回答2:函數(shù)表達式不會提升。
看一遍《javascript高級程序設(shè)計》吧。
回答3:聲明和表達式是不一樣的,聲明的話不光定義會提前,賦值也會提前賦好,而表達式不會,舉個栗子:
a();function a(){}; //等同于var a = function(){};a();///////對于表達式有a();var a = function(){}; //等同于var a;a();a = function(){}; //簡單來講就是表達式的賦值必須要等程序運行到相關(guān)行的時候才會進行回答4:
同樓上,你的函數(shù)創(chuàng)建方式是函數(shù)字面量形式,改成
alert(sum(10,10));function sum(num1,num2){ return num1+num2;}
就行了
相關(guān)文章:
1. Python從URL中提取域名2. 實現(xiàn)bing搜索工具urlAPI提交3. node.js - windows10下的npm全局路徑的復原或者將npm徹底刪除?4. python執(zhí)行cmd命令,怎么讓他執(zhí)行類似Ctrl+C效果將其結(jié)束命令?5. python - scrapy url去重6. MySQL主鍵沖突時的更新操作和替換操作在功能上有什么差別(如圖)7. mysql在限制條件下篩選某列數(shù)據(jù)相同的值8. 關(guān)于mysql聯(lián)合查詢一對多的顯示結(jié)果問題9. 數(shù)據(jù)庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。10. python - Django有哪些成功項目?
