ఇక్మాస్క్రిప్ట్ arguments ఆబ్జెక్ట్

arguments ఆబ్జెక్ట్

ఫంక్షన్ కోడ్లో, డెవలపర్స్ ప్రత్యేక ఆబ్జెక్ట్ arguments ఉపయోగిస్తారుపారామీటర్ పేరును తెలుపకుండాఅది అవి పొందుతాయి.

ఉదాహరణకు, sayHi() ఫంక్షన్లో, మొదటి పారామీటర్ మెసేజ్. arguments[0] ద్వారా కూడా ఈ విలువను పొందవచ్చు, అంటే మొదటి పారామీటర్ విలువ (మొదటి పారామీటర్ స్థానం 0, రెండవ పారామీటర్ స్థానం 1, ఇలా కొనసాగుతుంది).

అందువల్ల, పారామీటర్ పేరును తెలుపకుండా ఫంక్షన్ను పునఃరూపొందించవచ్చు:

function sayHi() {
  if (arguments[0] == "bye") {
    return;
  }
  alert(arguments[0]);
}

检测参数个数

还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。

ఫంక్షన్ ప్రారంభంలో పారామిటర్ల సంఖ్యను అవుట్పుట్ చేయడానికి కోడ్ దిశాంతి అవుతుంది:

function howManyArgs() {
  alert(arguments.length);
}
howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

ఈ కోడ్ చేయబడిన మొత్తం సంఖ్యలు క్రమంగా "2"、"0" మరియు "1" అవుతాయి.

ప్రకటన:ఇతర ప్రోగ్రామింగ్ భాషలకు విరుద్ధంగా, ECMAScript ఫంక్షన్కు పాసుచేసిన పారామిటర్ల సంఖ్యను పరిగణించదు. డెవలపర్లు నిర్వహించిన ఫంక్షన్లు ఏ పారామిటర్ల సంఖ్యను స్వీకరించగలవు (నెట్స్కేప్ దస్తావేజు ప్రకారం అత్యధికంగా 255 పారామిటర్లు స్వీకరించగలవు), ఏ ప్రత్యేక ప్రతిక్రియ లేదు. కొన్ని పారామిటర్లు లేకపోతే ఫంక్షన్కు undefined తీసుకువస్తాయి, అదనపు పారామిటర్లు అవగాహనలేదు.

ఫంక్షన్ రీలోడ్ పోలిమర్ఫిజమ్

arguments ఆబ్జెక్ట్ ద్వారా ఫంక్షన్కు పాసుచేసిన పారామిటర్ల సంఖ్యను పరిగణించి, ఫంక్షన్ రీలోడ్ అనుసంధానించవచ్చు:

function doAdd() {
  if(arguments.length == 1) {
    alert(arguments[0] + 5);
  } else if(arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}
doAdd(10);	//అవుట్పుట్ "15"
doAdd(40, 20);	//అవుట్పుట్ "60"

ఒక మాత్రమే పారామిటర్ ఉన్నప్పుడు, doAdd() ఫంక్షన్ పారామిటర్కు 5 జోడిస్తుంది. రెండు పారామిటర్లు ఉన్నప్పుడు, రెండు పారామిటర్లను జోడించి అవి యొక్క సమానతను తిరిగి ఇవ్వబడుతుంది. కాబట్టి, doAdd(10) అవుట్పుట్ అవుతుంది "15", మరియు doAdd(40, 20) అవుట్పుట్ అవుతుంది "60".

రీలోడ్ అని మంచిది కాదు, కానీ ఈసాగించగలిగేది ఎక్మాస్క్రిప్ట్ ఈ పరిమితిని అవగాహనకి తీసుకువస్తుంది.