ECMAScript Function ¶ÔÏó£¨Àࣩ

ECMAScript µÄº¯Êýʵ¼ÊÉÏÊǹ¦ÄÜÍêÕûµÄ¶ÔÏó¡£

Function ¶ÔÏó£¨Àࣩ

ECMAScript ×îÁîÈ˸ÐÐËȤµÄ¿ÉÄÜιýÓÚº¯Êýʵ¼ÊÉÏÊǹ¦ÄÜÍêÕûµÄ¶ÔÏó¡£

Function Àà¿ÉÒÔ±íʾ¿ª·¢Õß¶¨ÒåµÄÈκκ¯Êý¡£

Óà Function ÀàÖ±½Ó´´½¨º¯ÊýµÄÓï·¨ÈçÏ£º

var function_name = new function(arg1, arg2, ..., argN, function_body)

ÔÚÉÏÃæµÄÐÎʽÖУ¬Ã¿¸ö arg ¶¼ÊÇÒ»¸ö²ÎÊý£¬×îºóÒ»¸ö²ÎÊýÊǺ¯ÊýÖ÷Ì壨ҪִÐеĴúÂ룩¡£ÕâЩ²ÎÊý±ØÐëÊÇ×Ö·û´®¡£

¼ÇµÃÏÂÃæÕâ¸öº¯ÊýÂð£¿

function sayHi(sName, sMessage) {
  alert("Hello " + sName + sMessage);
}

»¹¿ÉÒÔÕâÑù¶¨ÒåËü£º

var sayHi 
= 
new Function("sName", "sMessage", "alert(\"Hello \" + sName + sMessage);");

ËäÈ»ÓÉÓÚ×Ö·û´®µÄ¹ØÏµ£¬ÕâÖÖÐÎʽдÆðÀ´ÓÐЩÀ§ÄÑ£¬µ«ÓÐÖúÓÚÀí½âº¯ÊýÖ»²»¹ýÊÇÒ»ÖÖÒýÓÃÀàÐÍ£¬ËüÃǵÄÐÐΪÓëÓà Function ÀàÃ÷È·´´½¨µÄº¯ÊýÐÐΪÊÇÏàͬµÄ¡£

Çë¿´ÏÂÃæÕâ¸öÀý×Ó£º

function doAdd(iNum) {
  alert(iNum + 20);
}

function doAdd(iNum) {
  alert(iNum + 10);
}

doAdd(10);	//Êä³ö "20"

ÈçÄãËùÖª£¬µÚ¶þ¸öº¯ÊýÖØÔØÁ˵ÚÒ»¸öº¯Êý£¬Ê¹ doAdd(10) Êä³öÁË "20"£¬¶ø²»ÊÇ "30"¡£

Èç¹ûÒÔÏÂÃæµÄÐÎÊ½ÖØÐ´¸Ã´úÂë¿é£¬Õâ¸ö¸ÅÄî¾ÍÇå³þÁË£º

var doAdd = new Function("iNum", "alert(iNum + 20)");
var doAdd = new Function("iNum", "alert(iNum + 10)");
doAdd(10);

Çë¹Û²ìÕâ¶Î´úÂ룬ºÜÏÔÈ»£¬doAdd µÄÖµ±»¸Ä³ÉÁËÖ¸Ïò²»Í¬¶ÔÏóµÄÖ¸Õë¡£º¯ÊýÃûÖ»ÊÇÖ¸Ïòº¯Êý¶ÔÏóµÄÒýÓÃÖµ£¬ÐÐΪ¾ÍÏñÆäËû¶ÔÏóÒ»Ñù¡£ÉõÖÁ¿ÉÒÔʹÁ½¸ö±äÁ¿Ö¸Ïòͬһ¸öº¯Êý£º

var doAdd = new Function("iNum", "alert(iNum + 10)");
var alsodoAdd = doAdd;
doAdd(10);	//Êä³ö "20"
alsodoAdd(10);	//Êä³ö "20"

ÔÚÕâÀ±äÁ¿ doAdd ±»¶¨ÒåΪº¯Êý£¬È»ºó alsodoAdd ±»ÉùÃ÷ΪָÏòͬһ¸öº¯ÊýµÄÖ¸Õë¡£ÓÃÕâÁ½¸ö±äÁ¿¶¼¿ÉÒÔÖ´Ðиú¯ÊýµÄ´úÂ룬²¢Êä³öÏàͬµÄ½á¹û - "20"¡£Òò´Ë£¬Èç¹ûº¯ÊýÃûÖ»ÊÇÖ¸Ïòº¯ÊýµÄ±äÁ¿£¬ÄÇô¿ÉÒ԰Ѻ¯Êý×÷Ϊ²ÎÊý´«µÝ¸øÁíÒ»¸öº¯ÊýÂ𣿻شðÊǿ϶¨µÄ£¡

function callAnotherFunc(fnFunction, vArgument) {
  fnFunction(vArgument);
}

var doAdd = new Function("iNum", "alert(iNum + 10)");

callAnotherFunc(doAdd, 10);	//Êä³ö "20"

ÔÚÉÏÃæµÄÀý×ÓÖУ¬callAnotherFunc() ÓÐÁ½¸ö²ÎÊý - Òªµ÷Óõĺ¯ÊýºÍ´«µÝ¸ø¸Ãº¯ÊýµÄ²ÎÊý¡£Õâ¶Î´úÂë°Ñ doAdd() ´«µÝ¸ø callAnotherFunc() º¯Êý£¬²ÎÊýÊÇ 10£¬Êä³ö "20"¡£

×¢Ò⣺¾¡¹Ü¿ÉÒÔʹÓà Function ¹¹Ô캯Êý´´½¨º¯Êý£¬µ«×îºÃ²»ÒªÊ¹ÓÃËü£¬ÒòΪÓÃËü¶¨Ò庯Êý±ÈÓô«Í³·½Ê½ÒªÂýµÃ¶à¡£²»¹ý£¬ËùÓк¯Êý¶¼Ó¦¿´×÷ Function ÀàµÄʵÀý¡£

Function ¶ÔÏóµÄ length ÊôÐÔ

ÈçǰËùÊö£¬º¯ÊýÊôÓÚÒýÓÃÀàÐÍ£¬ËùÒÔËüÃÇÒ²ÓÐÊôÐԺͷ½·¨¡£

ECMAScript ¶¨ÒåµÄÊôÐÔ length ÉùÃ÷Á˺¯ÊýÆÚÍûµÄ²ÎÊý¸öÊý¡£ÀýÈ磺

function doAdd(iNum) {
  alert(iNum + 10);
}

function sayHi() {
  alert("Hi");
}

alert(doAdd.length);	//Êä³ö "1"
alert(sayHi.length);	//Êä³ö "0"

º¯Êý doAdd() ¶¨ÒåÁËÒ»¸ö²ÎÊý£¬Òò´ËËüµÄ length ÊÇ 1£»sayHi() ûÓж¨Òå²ÎÊý£¬ËùÒÔ length ÊÇ 0¡£

¼Çס£¬ÎÞÂÛ¶¨ÒåÁ˼¸¸ö²ÎÊý£¬ECMAScript ¿ÉÒÔ½ÓÊÜÈÎÒâ¶à¸ö²ÎÊý£¨×î¶à 25 ¸ö£©£¬ÕâÒ»µãÔÚ¡¶º¯Êý¸ÅÊö¡·ÕâÒ»ÕÂÖн²½â¹ý¡£ÊôÐÔ length Ö»ÊÇΪ²é¿´Ä¬ÈÏÇé¿öÏÂÔ¤ÆÚµÄ²ÎÊý¸öÊýÌṩÁËÒ»ÖÖ¼ò±ã·½Ê½¡£

Function ¶ÔÏóµÄ·½·¨

Function ¶ÔÏóÒ²ÓÐÓëËùÓжÔÏó¹²ÏíµÄ valueOf() ·½·¨ºÍ toString() ·½·¨¡£ÕâÁ½¸ö·½·¨·µ»ØµÄ¶¼ÊǺ¯ÊýµÄÔ´´úÂ룬ÔÚµ÷ÊÔʱÓÈÆäÓÐÓá£ÀýÈ磺

function doAdd(iNum) {
  alert(iNum + 10);
}

document.write(doAdd.toString());

ÉÏÃæÕâ¶Î´úÂëÊä³öÁË doAdd() º¯ÊýµÄÎı¾¡£Ç××ÔÊÔÒ»ÊÔ£¡

VUE