關于arguments,可以看看下面
函數1

函數2

第二個函數中沒有形參,直接以agrguments[0]的方式獲取了參數,,這里函數的agrguments并不是一個數組,雖然用起來是數組,他是一個對象,類數組,有自己的lengths屬性,不過需要注意的是 ****函數名.lengths不等同于agrguments.lengths****, 第一個是在函數創建的時候就確定了的,但是第二個是實際的個數是實際的個數。
另外,不要亂用arguments,因為非常的影響可讀性。
不過既然出現了肯定是有他存在的理由的,arguments適合創建動態函數的場景,如下例子:
~~~
/*
* 創建一個函數 announce, 需要完成以下要求:
* 1、函數可接受不定數目的參數
* 2、拼接所有參數成一句完整的字符串
* 3、最終通過 console.log 輸出拼接好的字符串
*/
function announce(){
var length = arguments.length;
var i=0;
// var str=new String();
var str ='獲得本次大會第一名的共有'+length+'人,分別是'
if(length){
for(;i<length-1;i++){
str =str+ arguments[i]+'、';
}
return str+arguments[length-1]+'。'
}
}
var resultStr = announce('Tom', 'Jack', 'Mike');
console.log(resultStr);
~~~
在這個函數中我們不知道會有在實際使用的時候會傳入多少參數進來,所以我們可以使用遍歷arguments的個數。
- 以專業工程師的標準要求自己
- JS
- 函數的this
- 函數的argument
- 函數的apply、bind、call方法
- 創建對象
- 構造函數創建對象
- 原型結合構造函數創建對象
- 原型
- 繼承
- 閉包
- 正則表達式
- Ajax
- 設計模式
- ES6
- es6的模塊化
- 定義變量的新方式
- 函數擴展
- 數組擴展
- 性能與工程化
- 關于http與緩存
- 重排(reflow、layout)與重繪
- 頁面性能
- gulp
- webpack
- 一些項目回顧總結
- 移動端&微信H5游戲
- 微信小程序
- Vue.js
- 隨手記錄
- 如何通過前端技能獲取2018世界杯門票
- jsonp
- es6 javascript對象方法Object.assign()
- 一份不錯的基礎面試題
- vscode常用插件
- koroFileHeader
- 構建自己的Js工具庫
- H5 game
- Phaser從入坑到放棄再入坑
- 1.游戲的創建
- 2.資源的加載
- 3.phaser中的舞臺,世界和攝像機
- 4.游戲縮放控制,移動端的適配
- 5.phaser中的顯示對象
- 1.概述
- 2.phaser中的圖片,圖形,和按鈕
- 3.phaser中的精靈
- 4.文字
- 5.組
- 6.phaser中的動畫
- 7.粒子和瓦片地圖
- 8.瓦片地圖
- lodash
- ES5 to ESNext?—?here’s every feature added to JavaScript since 2015
- 防抖(debounce) 和 節流(throttling)