arguments和類數(shù)組

arguments 是一個(gè)對(duì)應(yīng)于傳遞給函數(shù)的參數(shù)的類數(shù)組對(duì)象。

什么是類數(shù)組呢?

類似于Array,但除了length屬性和索引元素之外沒(méi)有任何Array屬性。但是類數(shù)組可以被轉(zhuǎn)換為真正的數(shù)組。

var args = Array.prototype.slice.call(arguments);
var args = [].slice.call(arguments);
var args = (arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments));

const args = Array.from(arguments);
const args = [...arguments];

arguments的使用

  • length屬性表示實(shí)參的確切個(gè)數(shù)
  • 可以通過(guò)數(shù)組索引的方式獲取單個(gè)參數(shù)的值
  • 作為函數(shù)參數(shù)的別名(非嚴(yán)格模式)
function assert(bol, cons) {
  if(bol) {
    console.log(cons)
  }
}

function whatever(a,b,c) {
  // 值的準(zhǔn)確性校驗(yàn)
  assert(a === 1, 'the value of a is 1')
  assert(b === 2, 'the value of b is 2')
  assert(c === 3, 'the value of c is 3')

  // 共傳入 5 個(gè)參數(shù)
  assert(arguments.length === 5, 'we have passed in 5 parameters')
  // 驗(yàn)證傳入的前3個(gè)參數(shù)與函數(shù)的3個(gè)形參匹配
  assert(arguments[0] === a, 'the first argument is assigned to a')
  assert(arguments[1] === b, 'the second argument is assigned to b')
  assert(arguments[2] === c, 'the third argument is assigned to c')
  // 驗(yàn)證額外的參數(shù)可以通過(guò)參數(shù) arguments 獲取
  assert(arguments[3] === 4, 'can access the fourth argument')
  assert(arguments[4] === 5, 'can access the fifth argument')

  // 別名
  assert(a === 1, 'the a is 1')
  assert(arguments[0] === 1, 'the first argument is 1')

  arguments[0] = 666
  assert(a === 666, 'now, the a is 666')
  assert(arguments[0] === 666, 'now, the first argument is 666')

  a = 999
  assert(a === 999, 'now, the a is 999')
  assert(arguments[0] === 999, 'now, the first argument is 999')
}

whatever(1,2,3,4,5)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,265評(píng)論 0 4
  • 函數(shù)和對(duì)象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對(duì)于任何一門(mén)語(yǔ)言來(lái)說(shuō)都是核心的概念。通過(guò)函數(shù)可以封裝任意多條語(yǔ)句,而且...
    道無(wú)虛閱讀 4,614評(píng)論 0 5
  • JavaScript語(yǔ)言精粹 前言 約定:=> 表示參考相關(guān)文章或書(shū)籍; JS是JavaScript的縮寫(xiě)。 本書(shū)...
    微笑的AK47閱讀 587評(píng)論 0 3
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,281評(píng)論 0 3
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,434評(píng)論 0 5