1. 程式人生 > >js之arguments詳解

js之arguments詳解

平時編寫js程式碼對arguments接觸的可能不是很多,但是瞭解arguments卻是很有必要的。

例如,需要編寫一個函式求傳入的若干個數字(不能用陣列顯示傳入)的和,

這時候就需要用到arguments了。

要實現這個函式我們先來了解下arguments:

Javascript中arguments是一個類似Array的存在,但它不能等同於Array。

arguments物件不能顯式的建立,它只有在函式開始時才可用。

它可以像訪問陣列那樣去訪問每一個子元素。.

PS:arguments[0],arguments[1],。。。。。。。。arguments[n];

Javascript並沒有過載函式的功能,但是通過Arguments物件能夠模擬過載。

Javascript的每個函式都會有一個Arguments物件例項arguments,它引用著函式的實參,它也有類似於陣列的length屬性。

(1)、arguments.length 為函式實參個數。

(2)、arguments.callee 引用函式自身。

1、我們可以借用arguments.length可以來檢視實參和形參的個數是否一致:

function add(a, b) {
  var realLen = arguments.length;
  console.log("realLen:", arguments.length);
  var len = add.length;
  console.log("len:", add.length);
  if (realLen == len) {
  	console.log('實參和形參個數一致');
  } else {
  	console.log('實參和形參個數不一致');
  }
};
add(1,2,3,6,8);
2、我們可以借用arguments.callee來讓匿名函式實現遞迴:
var sum = function(n) {
	if(n == 1) {
		return 1;
  } else {
  	return n + arguments.callee(n-1);
 }
}
console.log("sum =", sum(5));

好了現在讓我們來實現文章開頭提到的那個函式(求傳入的若干個數字(不能用陣列顯示傳入)的和)。

1、借用arguments.length屬性來實現

function add() {
	//console.log("length", arguments.length);
	var len = arguments.length;
	var sum = 0;
	for (var i = 0; i < len; ++i) {
		sum += arguments[i];
	}
	return sum;
};
add(1,2,3,6,8);


2、借用prototype屬性來實現:

function add() {
  return Array.prototype.reduce.call(arguments, function(n1, n2) {
    return n1 + n2;
  });   
};
add(1,2,3,6,8);


相關推薦

jsarguments

平時編寫js程式碼對arguments接觸的可能不是很多,但是瞭解arguments卻是很有必要的。 例如,需要編寫一個函式求傳入的若干個數字(不能用陣列顯示傳入)的和, 這時候就需要用到argum

jsargument

call 獲取 alt php 沒有 遞歸 mage 數組 info arguments是什麽呢?   它是一個對象,是一個長的很像數組的對象。 arguments包含什麽內容呢?   它是函數運行時的實參列表。 我們來實際操作一下看arguments裏到底有什麽   js

JS函式

1、定義 函式也是一個物件;它是可以重複執行的程式碼塊;是可以完成特定功能的一段程式碼;使用typeof檢查一個函式物件時,會返回function。 2、作用 因為一部分程式碼使用次數可能會很多,所以封裝起來,需要的時候呼叫就可以了。這樣做可以將複雜的事情簡單化 ,將重複使用的程式碼進行

JS陣列

1、什麼是陣列? 陣列就是一組資料的集合; 其表現形式就是記憶體中的一段連續的記憶體地址; 陣列名稱其實就是連續記憶體地址的首地址。 2、陣列特點? 陣列定義時無需指定資料型別; 陣列定義時可以無需指定陣列長度; 陣列可以儲存任何資料型別的資料(比

js JSON

JSON:JavaScriptObjectNotation JSON是一種語法,用來序列化物件、陣列、字串、布林值和null。 JSON是基於JavaScript的語法,但與之不同   注意事項 JSON 是一種純資料格式,它只包含屬性,沒有方法。 JSON 要求有兩頭的 { }

javaweb監聽器

兩個 rec roman 虛擬 銷毀 mar host swap 技術 在servlet中定義了多種類型的監聽器,他們用於監聽事件源分別是servletContext,httpsession,servletrequest 這三個域對象。 servlet中監聽器主要有三類:

IO測試工具fio

沒有 性能 同時 rac 目前 code linux系統 安裝 enc 目前主流的第三方IO測試工具有fio、iometer和Orion,這三種工具各有千秋。 fio在Linux系統下使用比較方便,iometer在window系統下使用比較方便,Orion是oracle的I

多媒體開發庫 SDL

詳解 lang 模擬 llb 創建 mac os 視頻 內置 bsp SDL 簡介 SDL(Simple DirectMedia Layer)是一套開放源代碼的跨平臺多媒體開發庫,使用C語言寫成。SDL提供了數種控制圖像、聲音、輸出入的函數,讓開發者只要用相同或是相似的代碼

HadoopWordCount

ride 開始 zookeepe ati 程序 form 數組 -c 狀態 花了好長時間查找資料理解、學習、總結 這應該是一篇比較全面的MapReduce之WordCount文章了 耐心看下去 1,創建本地文件 在hadoop-2.6.0文件夾下創建一個文件夾data,在其

JS中JSON

名稱 完全 rip json詳解 core 兼容 json字符串 之間 org JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,采用完全獨立於語言的文本格式,是理想的數據交換格式。同時,JSON是 JavaScript 原生格式

Vue 進階教程 v-model

com 方式 事件 變化 復習 簡寫 mage fine 需要 分享 Vue 官網教程上關於 v-model 的講解不是十分的詳細,寫這篇文章的目的就是詳細的剖析一下, 並介紹 Vue 2.2 v-model改進的地方,然後穿插的再說點 Vue 的小知識。 在 Vue 中,

CEF3開發者系列CefEnableHighDPISupport

html use enable val 情況 immediate zoom brush 放大 在CEF3中,CefEnableHighDPISupport()這個接口函數在使用時一般不為人所註意,但是如果稍有不慎,會造成打開的網頁不能填滿窗口的問題。如果是需要flash插件

Linux性能監控命令lsof

轉換 device symbol 能夠 基礎 打開 init 可執行文件 ive 1. lsof 命令介紹 lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問

Linux命令CP

linux命令之cp詳解Linux命令之CP詳解嘿嘿,又一周過去了,大家過的怎麽樣呢,在這一周時間裏,小編可是又學到不少新知識呢。今天呢,小編就和大家分享一下Linux中我們常用的CP的命令,這裏的cp可是copy的簡寫噢。(容我嘚瑟一下) 學過linux的都知道,在我們操作的過程中,我們常常會用到cp這個命

aNDROIDMEDIapLaYER

iap music media 詳解 list oid aid 5% layer %E8%BD%AC%E8%BD%BD%E4%B8%80%E4%B8%AA%E5%9B%BE%E7%89%87%E5%A4%84%E7%90%86%E5%B7%A5%E5%85%B7%E7%B1

緩沖加載圖片的 jQuery 插件 lazyload.js 使用方法

java ajax jpg ide javascrip ava ade src doc 在寫代碼的時候,經常會用到懶加載的模式,以前是通過window.onload的模式去加載,但是圖片很多或者用ajax請求的時候,就會很麻煩,現在用lazyload的模式加載方便很多

MyBatisMapper及常用技巧

mybatis mapperselect先看一個簡單的案例:<select id="selectPerson" parameterType="int" resultType="hashmap"> SELECT * FROM PERSON WHERE ID = #{id} </selec

[持續交付實踐] pipeline:pipeline 使用語法

安裝工具 詳細 href 3.0 def 實現 能夠 action roo 一、引言 jenkins pipeline語法的發展如此之快用日新月異來形容也不為過,而目前國內對jenkins pipeline關註的人還非常少,相關的文章更是稀少,唯一看到w3c有篇相關的估計是

微信小程序 WXML、WXSS 和JS介紹及

名單 獲取 hang href 直接 last 1.2 data sub 前幾天折騰了下。然後列出一些實驗結果,供大家參考。 百牛信息技術bainiu.ltd整理發布於博客園 0. 使用開發工具模擬的和真機差異還是比較大的。也建議大家還是真機調試比較靠譜。 1. WXML(

python模塊XlsxWriter

som hnu ima conf all 合並單元格 stack from pen Xlsx是python用來構造xlsx文件的模塊,可以向excel2007+中寫text,numbers,formulas 公式以及hyperlinks超鏈接。 可以完成xlsx文件的自動化