免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
ECMAScript中的函數(shù)

有 3 種定義函數(shù)的方式

  • 函數(shù)聲明
  • 函數(shù)表達(dá)式
  • Function 構(gòu)造函數(shù)(很少使用)

函數(shù)聲明

function 關(guān)鍵字后需要指定函數(shù)名

function sum(num1, num2) {
  return num1 + num2;
} // 不加分號(hào)

console.log(sum(2, 3)); // 5

函數(shù)表達(dá)式

function 關(guān)鍵字后不用指定函數(shù)名;函數(shù)末尾需要添加一個(gè)分號(hào),就像聲明其他變量時(shí)一樣

var sum = function (num1, num2) {
  return num1 + num2;
}; // 加分號(hào)

console.log(sum(2, 3)); // 5

Function 構(gòu)造函數(shù)

Function 構(gòu)造函數(shù)可以接收任意數(shù)量的參數(shù),但最后一個(gè)參數(shù)始終都被看成是函數(shù)體,而前面的參數(shù)則枚舉出了新函數(shù)的參數(shù)。

var sum = new Function('num1', 'num2', 'return num1 + num2'); // 不推薦

console.log(sum(2, 3)); // 5

函數(shù)聲明與函數(shù)表達(dá)式

??函數(shù)聲明函數(shù)表達(dá)式 是有區(qū)別的。執(zhí)行代碼時(shí),解析器會(huì)率先讀取函數(shù)聲明,并使其在執(zhí)行任何代碼之前可用(可以訪問);至于函數(shù)表達(dá)式,則必須等到解析器執(zhí)行到它所在的代碼行,才會(huì)真正被解釋執(zhí)行。

??同時(shí)說(shuō)明:函數(shù)聲明會(huì)被提升;函數(shù)聲明要早于變量聲明被解析器讀取

// 函數(shù)聲明提升
console.log(sum(2, 3)); // 5 (函數(shù)聲明被提升到源代碼樹頂部)

function sum(sum1, sum2) {
  return sum1 + sum2;
}

如果把上面的函數(shù)聲明改為等價(jià)的函數(shù)表達(dá)式,執(zhí)行將報(bào)錯(cuò):

console.log(sum(2, 3)); // TypeError: sum is not a function

var sum = function (sum1, sum2) {
  return sum1 + sum2;
}

關(guān)于ECMAScript中的函數(shù)

  • 函數(shù)實(shí)際是對(duì)象。每個(gè)函數(shù)都是 Function 類型的實(shí)例,而且都與其他引用類型一樣具有屬性和方法。
  • 由于函數(shù)是對(duì)象,因此 函數(shù)名實(shí)際上也是一個(gè)指向函數(shù)對(duì)象的指針,不會(huì)與某個(gè)函數(shù)綁定。即:函數(shù)是對(duì)象,函數(shù)名是指針
  • 因?yàn)?u>函數(shù)名本身就是變量,所以函數(shù)也可以作為值來(lái)使用。也就是說(shuō),不僅可以像傳遞參數(shù)一樣把函數(shù)傳遞給另一個(gè)函數(shù),而且可以將一個(gè)函數(shù)作為另一個(gè)函數(shù)的結(jié)果返回。
  • 要訪問函數(shù)的指針而不執(zhí)行函數(shù)的話,必須去掉函數(shù)名后面的那對(duì)大括號(hào)。
  • 沒有重載,后面的函數(shù)會(huì)覆蓋前面的同名函數(shù)。
  • 每個(gè)函數(shù)都包含兩個(gè)非繼承而來(lái)的方法:apply() 和 call()。用途都是在特定的作用域中調(diào)用函數(shù),即設(shè)置函數(shù)體內(nèi) this 對(duì)象的值。
function sum(num1, num2) {
  return num1 + num2;
}
console.log(sum(2, 3)); // 5

var anotherSum = sum; // 使用 不帶圓括號(hào) 的函數(shù)名是訪問函數(shù)指針,而非調(diào)用函數(shù)
console.log(anotherSum(2, 3)); // 5
// 以下為關(guān)鍵代碼
sum = null;
console.log(anotherSum(2, 3)); // 5

可以結(jié)合以下例子理解

var obj1 = new Object();
var obj2 = obj1;

obj1.name = 'Nicholas';
console.log(obj2.name); // Nicholas

obj1 = null;
console.log(obj2.name); // Nicholas
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Javascript函數(shù)聲明與遞歸調(diào)用
深入理解javascript函數(shù)系列第一篇
05.JS函數(shù)
(最全面的)JavaScript 設(shè)計(jì)原則指南
javascript快速入門12
js自執(zhí)行函數(shù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服