Baseline Widely available
Function()
ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ãæ°ãã Function
ãªãã¸ã§ã¯ããçæãã¾ããã³ã³ã¹ãã©ã¯ã¿ã¼ãç´æ¥å¼ã³åºãã¨åçã«é¢æ°ãçæãããã¨ãã§ãã¾ãããã»ãã¥ãªãã£ãã eval()
ã¨ä¼¼ãæ§è½ã®ï¼ãã ããã¯ããã«éè¦æ§ã®ä½ãï¼åé¡ãæ±ãã¾ãããã ã eval
ã¨ã¯ç°ãªãã Function
ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ã°ãã¼ãã«ã¹ã³ã¼ãã§å®è¡ããã颿°ã®ã¿ãçæãã¾ãã
const sum = new Function("a", "b", "return a + b");
console.log(sum(2, 6));
// æå¾
ãããåºåçµæ: 8
æ§æ
new Function(functionBody)
new Function(arg1, functionBody)
new Function(arg1, arg2, functionBody)
new Function(arg1, arg2, /* â¦, */ argN, functionBody)
Function(functionBody)
Function(arg1, functionBody)
Function(arg1, arg2, functionBody)
Function(arg1, arg2, /* â¦, */ argN, functionBody)
ã¡ã¢: Function()
㯠new
ããã£ã¦ããªãã¦ãå¼ã³åºããã¨ãã§ãã¾ããã©ã¡ããæ°ãã Function
ã¤ã³ã¹ã¿ã³ã¹ã使ãã¾ãã
arg1
, â¦, argN
çç¥å¯
颿°ã§ä»®å¼æ°åã¨ãã¦ä½¿ç¨ãããååããããããJavaScript ã§æå¹ãªå¼æ°ï¼ãã¬ã¼ã³èå¥åãæ®ä½å¼æ°ãåå²å¼æ°ã®ããããããªãã·ã§ã³ã§æ¢å®å¤ä»ãï¼ã«å¯¾å¿ããæååãã¾ãã¯ã«ã³ãã§åºåããããã®ãããªæååã®ãªã¹ãã§ãªããã°ãªãã¾ããã
弿°ã¯é¢æ°å¼ã¨åæ§ã«è§£éã§ããããã空ç½ãã³ã¡ã³ããåãå
¥ãããã¾ããä¾ãã°ã"x", "theValue = 42", "[a, b] /* æ°å¤ */"
ãã¾ã㯠"x, theValue = 42, [a, b] /* æ°å¤ */"
ã§ããï¼"x, theValue = 42", "[a, b]"
ãæ£ããã§ãããã¨ã¦ãèªã¿ã¥ããã§ããï¼
functionBody
颿°å®ç¾©ãå½¢æãã JavaScript ã®æãå«ãæååã§ãã
Function
ã³ã³ã¹ãã©ã¯ã¿ã¼ã§çæããã Function
ãªãã¸ã§ã¯ãã¯ã颿°ã使ãããã¨ãã«æ§æè§£æããã¾ããããã¯ã颿°ã颿°å¼ã¾ãã¯é¢æ°å®£è¨ã使ã£ã¦å®ç¾©ãã¦ã³ã¼ãå
ã§å¼ã³åºãã¨ãã³ã¼ãã®ä»ã®é¨åã¨ä¸ç·ã«æ§æè§£æããããããããã«æ¯ã¹ã¦å¹çãè½ã¡ã¾ãã
颿°ã«æ¸¡ããã弿°ã®ãã¡ãæå¾ã®ãã®ãé¤ããã¹ã¦ã¯ã渡ãããé çªã§ã使ãã颿°ã®å¼æ°ã®èå¥ååã¨ãã¦æ±ããã¾ãã颿°ã¯ãæ¬¡ã®æ¹æ³ã§ã½ã¼ã¹ãçµã¿ç«ã¦ããã¨ã§ã颿°å¼ã¨ãã¦åçã«ã³ã³ãã¤ã«ããã¾ãã
`function anonymous(${args.join(",")}
) {
${functionBody}
}`;
ããã¯ããã®é¢æ°ã® toString()
ã¡ã½ãããå¼ã³åºããã¨ã§è¦³å¯ãããã¨ãã§ãã¾ãã
ããããé常ã®é¢æ°å¼ã¨ã¯ç°ãªãã anonymous
ã®åå㯠functionBody
ã®ã¹ã³ã¼ãã«ã¯è¿½å ããã¾ããã functionBody
ã¯ã°ãã¼ãã«ã¹ã³ã¼ãã«ããã¢ã¯ã»ã¹ããªãããã§ãã functionBody
ã峿 ¼ã¢ã¼ãã§ãªãå ´åï¼æ¬ä½èªä½ã« "use strict"
ãã£ã¬ã¯ãã£ããæå®ããå¿
è¦ãããã®ã¯ãã³ã³ããã¹ããã峿 ¼æ§ãç¶æ¿ãããªãããã§ãï¼ã arguments.callee
ã使ç¨ãã¦é¢æ°èªä½ãåç
§ãããã¨ãã§ãã¾ãããããã¯ãå帰çãªé¨åãå
é¨é¢æ°ã¨ãã¦å®ç¾©ãããã¨ãã§ãã¾ãã
const recursiveFn = new Function(
"count",
`
(function recursiveFn(count) {
if (count < 0) {
return;
}
console.log(count);
recursiveFn(count - 1);
})(count);
`,
);
ãªããçµã¿ç«ã¦ãããã½ã¼ã¹ã® 2 ã¤ã®åçãªé¨åãããªãã¡ã弿°ãªã¹ã args.join(",")
ããã³ functionBody
ã¯ãæåã®æ®µéã§å¥åã«æ§æè§£æãããããããæ§æçã«æå¹ã§ãããã¨ãä¿è¨¼ããã¾ããããã«ãããã¤ã³ã¸ã§ã¯ã·ã§ã³ã®ãããªè©¦ã¿ã鲿¢ãã¾ãã
new Function("/*", "*/) {");
// SyntaxError: Unexpected end of arg string
// "function anonymous(/*) {*/) {}" ã«ã¯ãªããªã
ä¾ Function ã³ã³ã¹ãã©ã¯ã¿ã¼ã«å¼æ°ãæå®ãã
以ä¸ã®ã³ã¼ã㯠2 ã¤ã®å¼æ°ãåã Function
ãªãã¸ã§ã¯ããçæãã¾ãã
// ãã®ä¾ã¯ JavaScript ã³ã³ã½ã¼ã«ã§ç´æ¥å®è¡ãããã¨ãã§ãã¾ã
// 2 ã¤ã®å¼æ°ãåãããã®åè¨ãè¿ã颿°ãçæãã¾ã
const adder = new Function("a", "b", "return a + b");
// 颿°ãå¼ã³åºãã¾ã
adder(2, 6);
// 8
弿° a
ããã³ b
ã¯é¢æ°ã®æ¬ä½ return a + b
ã®ä¸ã§ä½¿ç¨ãããå½¢å¼çãªä»®å¼æ°åã§ãã
// function ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ãã»ãã³ãã³ã§åºåãããè¤æ°ã®æãåãåããã¨ãã§ãã¾ãã颿°å¼ã§ã¯ã颿°åä»ãã® return æãè¦æ±ããã¾ãã
// æ°ãã颿°ãå¼ã³åºããããã¨ãç£è¦ãã¾ããããã¯ããã®å¾ããã«ä½æãã颿°ãå¼ã³åºããã¨ãã§ããããã«ããããã§ãã
const sumOfArray = new Function(
"const sumArray = (arr) => arr.reduce((previousValue, currentValue) => previousValue + currentValue); return sumArray",
)();
// 颿°ãå¼ã³åºã
sumOfArray([1, 2, 3, 4]);
// 10
// æ°ãã颿°ãå¼ã³åºãéã«ãã®ç¹ãèæ
®ããªãå ´åã Function.call() ã¡ã½ããã使ç¨ãã¦é¢æ°ãå¼ã³åºããã¨ãã§ãã¾ãã
const findLargestNumber = new Function(
"function findLargestNumber (arr) { return Math.max(...arr) }; return findLargestNumber",
);
// 颿°ã®å¼ã³åºã
findLargestNumber.call({}).call({}, [2, 4, 1, 8, 5]);
// 8
// 颿°å®£è¨ã«ã¯ return æã¯å¿
è¦ãªã
const sayHello = new Function(
"return function (name) { return `Hello, ${name}` }",
)();
// 颿°ãå¼ã³åºã
sayHello("world");
// Hello, world
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4