成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript之a(chǎn)rguments

miqt / 2589人閱讀

摘要:三的屬性屬性表示傳入函數(shù)的實(shí)際參數(shù)數(shù)量,而不是函數(shù)聲明時(shí)的形參數(shù)量。你好你好你好你好你好你好擴(kuò)展運(yùn)算符你好你好五嚴(yán)格模式嚴(yán)格模式和非嚴(yán)格模式中,的表現(xiàn)顯示不相同。而在嚴(yán)格模式中,實(shí)參和的值不會(huì)共享。

本文共 635 字,讀完只需 3 分鐘
概述

JavaScript中的函數(shù)與其他面向?qū)ο笳Z(yǔ)言有幾個(gè)不同的地方。

沒(méi)有函數(shù)重載

有一個(gè)表示實(shí)參列表的類(lèi)數(shù)組對(duì)象 arguments

一、函數(shù)重載

簡(jiǎn)單來(lái)說(shuō),JAVA 同一個(gè)類(lèi)中允許幾個(gè)函數(shù)有同樣的函數(shù)名稱(chēng),但是參數(shù)聲明不一樣,這就是函數(shù)重載。

但是 JS 不支持函數(shù)重載:

function foo(num) {
    console.log(num + 100)
}

function foo(num) {
    console.log(num + 200)
}

foo(100);  // 300

如果 js 中定義了兩個(gè)相同名稱(chēng)的函數(shù),那么該名字只屬于后定義的那個(gè)函數(shù)。

二、arguments 類(lèi)數(shù)組

函數(shù) arguments 對(duì)象是所有(非箭頭)函數(shù)中都可用的局部變量, 是一個(gè)類(lèi)似數(shù)組的對(duì)象。你可以使用arguments對(duì)象在函數(shù)中引用函數(shù)的(實(shí)際)參數(shù)。

function foo() {
    console.log(arguments);
}

foo(1, "foo", false, {name: "bar"}); // [1, "foo", false, object]
function foo() {
    console.log(typeof arguments);
}

foo(1, "foo", false, {name: "bar"}); // object

所以,arguments 是一個(gè)具有數(shù)組樣式的對(duì)象,有 length 屬性,和下標(biāo)來(lái)索引元素。

三、arguments 的屬性

length

function foo(num1, num2, num3) {
    console.log(arguments)
}

foo(1);  // [1]

length 屬性表示傳入函數(shù)的實(shí)際參數(shù)數(shù)量,而不是函數(shù)聲明時(shí)的形參數(shù)量。

callee
callee 表示函數(shù)本身,我們可以在函數(shù)中通過(guò) callee 調(diào)用本身。

四、轉(zhuǎn)化為真數(shù)組

slice

arguments 對(duì)象不支持?jǐn)?shù)組的其他方法,但是可以用 Function.call 來(lái)間接調(diào)用。

function sayHi() {
    console.log(Array.prototype.slice.call(arguments, 0))
}
sayHi("hello", "你好", "bonjour")  //["hello", "你好", "bonjour"]

splice

function sayHi() {
    console.log(Array.prototype.splice.call(arguments, 0));
}
sayHi("hello", "你好", "bonjour")  //["hello", "你好", "bonjour"]

Array.from

function sayHi() {
    console.log(Array.from(arguments));
}
sayHi("hello", "你好", "bonjour")  //["hello", "你好", "bonjour"]

擴(kuò)展運(yùn)算符

function sayHi(...arguments) {
    console.log(arguments);
}
sayHi("hello", "你好", "bonjour")  //["hello", "你好", "bonjour"]
五、嚴(yán)格模式

嚴(yán)格模式和非嚴(yán)格模式中,arguments 的表現(xiàn)顯示不相同。

// 嚴(yán)格模式
function foo(a, b) {
    "use strict";
    console.log(a, arguments[0]);
    a = 10;
    console.log(a, arguments[0]);
    arguments[0] = 20;
    console.log(a, arguments[0]);
    b = 30;
    console.log(b, arguments[1])
}
foo(1);
輸出:
1 1
10 1
10 20
30 undefined

// 非嚴(yán)格模式
function foo(a, b) {
    console.log(a, arguments[0]);
    a = 10;
    console.log(a, arguments[0]);
    arguments[0] = 20;
    console.log(a, arguments[0]);
    b = 30;
    console.log(b, arguments[1]);
}
foo(1);
輸出:
1 1
10 10
20 20
30 undefined

在非嚴(yán)格模式中,傳入的參數(shù),實(shí)參和 arguments 的值會(huì)共享,當(dāng)沒(méi)有傳入時(shí),實(shí)參與 arguments 值不會(huì)共享。

而在嚴(yán)格模式中,實(shí)參和 arguments 的值不會(huì)共享。

歡迎關(guān)注我的個(gè)人公眾號(hào)“謝南波”,專(zhuān)注分享原創(chuàng)文章。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98599.html

相關(guān)文章

  • JavaScript深入new的模擬實(shí)現(xiàn)

    摘要:深入系列第十二篇,通過(guò)的模擬實(shí)現(xiàn),帶大家揭開(kāi)使用獲得構(gòu)造函數(shù)實(shí)例的真相一句話(huà)介紹運(yùn)算符創(chuàng)建一個(gè)用戶(hù)定義的對(duì)象類(lèi)型的實(shí)例或具有構(gòu)造函數(shù)的內(nèi)置對(duì)象類(lèi)型之一也許有點(diǎn)難懂,我們?cè)谀M之前,先看看實(shí)現(xiàn)了哪些功能。 JavaScript深入系列第十二篇,通過(guò)new的模擬實(shí)現(xiàn),帶大家揭開(kāi)使用new獲得構(gòu)造函數(shù)實(shí)例的真相 new 一句話(huà)介紹 new: new 運(yùn)算符創(chuàng)建一個(gè)用戶(hù)定義的對(duì)象類(lèi)型的實(shí)例或具...

    tianlai 評(píng)論0 收藏0
  • JavaScript深入bind的模擬實(shí)現(xiàn)

    摘要:也就是說(shuō)當(dāng)返回的函數(shù)作為構(gòu)造函數(shù)的時(shí)候,時(shí)指定的值會(huì)失效,但傳入的參數(shù)依然生效。構(gòu)造函數(shù)效果的優(yōu)化實(shí)現(xiàn)但是在這個(gè)寫(xiě)法中,我們直接將,我們直接修改的時(shí)候,也會(huì)直接修改函數(shù)的。 JavaScript深入系列第十一篇,通過(guò)bind函數(shù)的模擬實(shí)現(xiàn),帶大家真正了解bind的特性 bind 一句話(huà)介紹 bind: bind() 方法會(huì)創(chuàng)建一個(gè)新函數(shù)。當(dāng)這個(gè)新函數(shù)被調(diào)用時(shí),bind() 的第一個(gè)參數(shù)...

    FingerLiu 評(píng)論0 收藏0
  • JavaScript模擬函數(shù)重載

    摘要:背景高級(jí)程序設(shè)計(jì)中提及,不支持函數(shù)重載。若出現(xiàn)函數(shù)名稱(chēng)相同情況下,后者覆蓋前者,故此不會(huì)出現(xiàn)重載的情況。維基百科場(chǎng)景例如,一個(gè)工廠有著數(shù)量級(jí)的員工,期望通過(guò)姓名找到某一員工或某類(lèi)員工,使用同一個(gè)方法通過(guò)透?jìng)鲄?shù)個(gè)數(shù)去查找員工。 背景 ???????《JavaScript高級(jí)程序設(shè)計(jì)》中提及,JavaScript 不支持函數(shù)重載。若出現(xiàn)函數(shù)名稱(chēng)相同情況下,后者覆蓋前者,故此不會(huì)出現(xiàn)重載...

    chenjiang3 評(píng)論0 收藏0
  • JavaScript進(jìn)階模擬new Object過(guò)程

    摘要:后續(xù)我將推出進(jìn)階系列,一方面是一個(gè)監(jiān)督自己學(xué)習(xí)的一個(gè)過(guò)程,另一方面也會(huì)給看到的童鞋一些啟發(fā)。第二步鏈接到原型中現(xiàn)在把構(gòu)造函數(shù)和參數(shù)都打印出來(lái)了。 原文:https://zhehuaxuan.github.io/... 作者:zhehuaxuan 寫(xiě)在前面的話(huà) 前端的入門(mén)相對(duì)簡(jiǎn)單,相對(duì)于其他方向天花板可能會(huì)相對(duì)較低。但是在市場(chǎng)上一個(gè)優(yōu)秀的前端依舊是很搶手的。能夠站在金字塔上的人往往寥寥...

    chengtao1633 評(píng)論0 收藏0
  • 【進(jìn)階1-2期】JavaScript深入執(zhí)行上下文棧和變量對(duì)象

    摘要:本計(jì)劃一共期,每期重點(diǎn)攻克一個(gè)面試重難點(diǎn),如果你還不了解本進(jìn)階計(jì)劃,點(diǎn)擊查看前端進(jìn)階的破冰之旅本期推薦文章深入之執(zhí)行上下文棧和深入之變量對(duì)象,由于微信不能訪(fǎng)問(wèn)外鏈,點(diǎn)擊閱讀原文就可以啦。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周正式開(kāi)始前端進(jìn)階的第一期,本周的主題是調(diào)用堆棧,今天是第二天。 本計(jì)劃一共28期,每期...

    Richard_Gao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<