国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

淺談JavaScript的函數及作用域

2019-11-19 18:11:42
字體:
來源:轉載
供稿:網友

函數和作用域是JavaScript的重要組成部分,我們在使用JavaScript編寫程序的過程中經常要用到這兩部分內容,作為初學者,我經常有困惑,借助寫此博文來鞏固下之前學習的內容。

(一)JavaScript函數

JavaScript函數是指一個特定代碼塊,可能包含多條語句,可以通過名字來供其他語句調用以執行函數包含的代碼語句。

1.JavaScript創建函數的方法有兩種:

函數聲明:

function funcDeclaration(){ return 'A is a function'; }

函數表達式:

var funExpression=function(){ return 'A is a function '; }

上述函數聲明和函數表達式的區別(注明:翻譯自:不同的方式來寫一個函數)在:

JavaScript解析器中存在一種變量聲明被提升(hosting)的機制,也就是說變量(函數)的聲明會被提升到作用域的最前面,即使寫代碼的時候是寫在最后面,也還是會被提升至最前面。

例如以下代碼段:

alert(foo); // function foo() {}alert(bar); // undefinedfunction foo() {}var bar = function bar_fn() {};alert(foo); // function foo() {}alert(bar); // function bar_fn() {}

輸出結果分別是function foo() {} 、undefined 、function foo() {} 和function bar_fn() {} 。

可以看到foo 的聲明寫在alert之后,仍然可以被正確調用,因為JavaScript解釋器會將其提升到alert前面,而以函數表達式創建的函數bar則不享受此待遇。

所以,JavaScript 引擎執行以上代碼的順序可能是這樣的:

  • 創建變量foo和 bar,并將它們都賦值為undefined。
  • 創建函數 foo 的函數體,并將其賦值給變量foo。
  • 執行前面的兩個 alert。
  • 創建函數 bar_fn ,并將其賦值給 bar。
  • 執行后面的兩個 alert。

2.函數的參數

在調用函數時,你可以向其傳遞值,這些值被稱為參數。

function printName(name){  console.log(name);}printName('Byron');printName('Casper);

其中name是形參,'Byron'和'Casper'是實參。

說到函數的參數,我們不得不提到arguments。此處涉及的內容有點多,請看客們參考樓主之前轉載的javascript arguments。

3.函數重載

重載是很多面向對象語言實現多態性的手段之一,在靜態語言中確定一個函數的手段是靠方法簽名--函數名+參數列表,也就是說相同名字的函數參數個數不同或者順序不同都被認為是不同的函數,成為函數重載。

在JavaScript中沒有函數重載的概念,函數通過名字確定唯一性,參數不同也被認為是相同的函數,后面的覆蓋前面的。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 从化市| 武胜县| 五台县| 石台县| 友谊县| 罗定市| 上高县| 水城县| 句容市| 镇远县| 五台县| 塘沽区| 大庆市| 墨江| 连山| 沙田区| 宣汉县| 石狮市| 西昌市| 淳化县| 贺州市| 东台市| 米泉市| 长岛县| 冀州市| 荆州市| 崇文区| 昌乐县| 长岛县| 安岳县| 吴桥县| 通化县| 来安县| 南靖县| 甘德县| 隆昌县| 武川县| 宜城市| 万山特区| 浦城县| 临泉县|