javaScript argument 學習筆記

ldzsl發表於2021-09-09

javaScript argument 學習筆記
1.什麼是 argument
argument是類陣列物件
例子:

function ex1(){
console.log(arguments)
}
ex1(“a”,”A”,0,{foo:”argument”})

執行看結果:
結果是一個陣列,但是不是真正的陣列;是一個類陣列.
再看看arguments代表的內容,其表示了函式執行時傳入函式的所有引數.可以用arguments[n],取得每一個引數.

2.arguments 操作
a)argument length;
arguments 是類陣列物件,包含length屬性;
例子:

function ex2(){
console.log(arguments.length;)
}
ex2();
ex2(1,2);
ex2(1,2,3);

b)arguments 轉陣列

Array.prototype.slice.call(arguments)
[].slice.call(arguments)

滿足一定條件的物件都能被slice方法轉化為陣列.
例子:

const aaa={0:’a’,1:’b’,length:2}
const bbb=[].slice.call(aaa);
console.log(Array.isArray(bbb),bbb);

不能將argument物件洩露出去,否則將會造成極大的效能浪費.
例子:

function ex3(){
return arguments;
}
 但可以將其轉化為陣列:
function ex4(){
const arr = new Array(arguments.length)
for(let i=0;i

(let 只對他所在的最內側塊內有效,var的範圍最少在一個函式內)
c)修改argument的值
在嚴格模式與非嚴格模式,修改函式值輸出的結果並不相同:
例子:

function ex5(a){
“use strict”;
console.log(a,arguments[0]);
a=10;
console.log(a,arguments[0]);
arguments[0]=20;
xonsole.log(a,arguments[0]);
}
ex5(1)

例子:

function ex6(a){
console.log(a,arguments[0]);
a=10;
console.log(a,arguments[0]);
arguments[0]=20;
console.log(a,arguments[0]);
}
ex6(a)

d)將引數從一個引數傳輸到另一個函式

function ex71(){
ex72.apply(this,arguments);
}
function ex72(){}

e)arguments與過載
js沒有過載;我們需要使用argument進行模擬

function ex8(aaa,bbb,ccc){
if(argument.length===2){alert(aaa+bbb)}
else if(argument===3){alert(aaa+bbb+ccc)}
}
ex8(111,222);
ex8(111,222,333);

3.ES6中的arguments
a)擴充套件運算子

function ex9(){
console.log(…arguments);
}
ex9(1,2,3);

b)rest
例子

function ex10(firstArg,…restArg){
console.log(Array.isArray(restArg));
console.log(firstArray,restArray);
}

ex10(1,2,3);

c)預設引數

function ex11(firstArg=0,secondArg=1){
console.log(arguments[0],argument[1]);
console.log(firstArg,secondArg);
}
ex11(99);

d)argument 轉陣列

Array.form()

4.陣列與類陣列物件

const obj={0:”a”,1:’b’}
const arr=[“a”,”b”]

物件的鍵值對
陣列的索引
obj的屬性是string
srr的索引是 number

建立類陣列物件:
例子:(得到Array的所有方法)

function ex12(){}
ex12.prototype=Object.crate(Array.prototype);
const ex121=new ex12();
ex121.push(“a”);

例子:(得到部分方法)

function ex13(){}
ex13.prototype.push=Array.prototype.push;
const ex131=new ex13();
ex131.push(‘a’);
ex131.push(‘b’);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2325/viewspace-2807446/,如需轉載,請註明出處,否則將追究法律責任。

相關文章