颿°ã¯ã JavaScript ã®åºæ¬çãªæ§æè¦ç´ ã®ã²ã¨ã¤ã§ãã JavaScript ã®é¢æ°ã¯ãããã·ã¼ã¸ã£ã«ä¼¼ã¦ãã¾ããã¿ã¹ã¯ãå®è¡ãããå¤ãè¨ç®ãããããä¸é£ã®æã§ãããããã·ã¼ã¸ã£ã颿°ã¨ãã¦èªããããããã«ã¯ãä½ããã®å ¥åãåãåããå ¥åã¨åºåã®éã«ä½ããã®æç½ãªé¢ä¿ãããåºåãè¿ãå¿ è¦ãããã¾ãã颿°ã使ç¨ããã«ã¯ãå¼ã³åºãããã¹ã³ã¼ãã®ã©ããã§é¢æ°ãå®ç¾©ããå¿ è¦ãããã¾ãã
ãã詳ãã㯠JavaScript ã®é¢æ°ã«é¢ããå®å ¨ãªãªãã¡ã¬ã³ã¹ã«ã¤ãã¦ã®ç« ãã覧ãã ããã
颿°ã®å®ç¾© 颿°å®£è¨é¢æ°å®ç¾© (颿°å®£è¨ã颿°å®ç¾©æ ã¨ãå¼ã°ãã¾ã) 㯠function
ãã¼ã¯ã¼ãã¨ãããã«ç¶ã以ä¸ã®å
å®¹ã§æ§æããã¾ãã
{ /* ⦠*/ }
ã§ãããã¾ããä¾ãã°ã次ã®ã³ã¼ã㯠square
ã¨ããååã®é¢æ°ãå®ç¾©ãã¾ãã
function square(number) {
return number * number;
}
颿° square
㯠number
ã¨ããååã®å¼æ°ã 1 ã¤ã¨ãã¾ãããã®é¢æ°ã¯ã弿° (ããªãã¡ number
) ã® 2 ä¹ãè¿ãããã«æç¤ºãã 1 ã¤ã®æã§æ§æããã¦ãã¾ããreturn
æã¯ã颿°ãè¿ãå¤ãããªãã¡ number * number
ãæå®ãã¾ãã
弿°ã¯åºæ¬çã«é¢æ°ã«å¤æ¸¡ãããã¾ãããã®ããã颿°æ¬ä½ã®ã³ã¼ãã§é¢æ°ã«æ¸¡ããã弿°ã«å®å ¨ã«æ°ããå¤ãä»£å ¥ãã¦ãããã®å¤æ´ã¯ã°ãã¼ãã«ã¾ãã¯ãã®é¢æ°ãå¼ã³åºããã³ã¼ãã«ã¯åæ ããã¾ããã
ãªãã¸ã§ã¯ãã弿°ã¨ãã¦æ¸¡ãã¨ã颿°ããªãã¸ã§ã¯ãã®ããããã£ã夿´ããå ´åãæ¬¡ã®ä¾ã«ã¿ãããããã«ããã®å¤æ´ã¯é¢æ°ã®å¤å´ã§ãåæ ããã¾ãã
function myFunc(theObject) {
theObject.make = "Toyota";
}
const myCar = {
make: "Honda",
model: "Accord",
year: 1998,
};
console.log(myCar.make); // "Honda"
myFunc(myCar);
console.log(myCar.make); // "Toyota"
é åã弿°ã¨ãã¦æ¸¡ãã¨ã颿°ãé åã®å¤ã夿´ããå ´åãæ¬¡ã®ä¾ã«ããããã«ããã®å¤æ´ã¯é¢æ°ã®å¤ã§ãåæ ããã¾ãã
function myFunc(theArr) {
theArr[0] = 30;
}
const arr = [45];
console.log(arr[0]); // 45
myFunc(arr);
console.log(arr[0]); // 30
颿°ã®å®£è¨ã¨å¼ã¯å ¥ãåã«ãããã¨ãã§ããããã«ãããã¹ã³ã¼ããã§ã¼ã³ããå½¢æããã¾ããä¾ã示ãã¾ãã
function addSquares(a, b) {
function square(x) {
return x * x;
}
return square(a) + square(b);
}
詳ããã¯ã颿°ã¹ã³ã¼ãã¨ã¯ãã¼ã¸ã£ãåç §ãã¦ãã ããã
颿°å¼ããã¾ã§ã®é¢æ°å®£è¨ã¯ãã¹ã¦æ§æçãªæã§ãããã颿°ã¯é¢æ°å¼ã«ãã£ã¦ä½æãããã¨ãã§ãã¾ãã
ãã®ãããªé¢æ°ã¯ç¡å (anonymous) ã«ãããã¨ãã§ãã¾ããååãã¤ããªãã¦ãããã®ã§ããä¾ãã°ã颿° square
ã¯æ¬¡ã®ããã«å®ç¾©ãããã¨ãã§ãã¾ãã
const square = function (number) {
return number * number;
};
console.log(square(4)); // 16
ãã ãã颿°å¼ã«ã¯ååãæå®ãããã¨ãã§ãã¾ããååãæå®ãããã¨ã§ã颿°ãèªåèªèº«ãåç §ãããã¨ãã§ããã¾ãããããã¬ã¼ã®ã¹ã¿ãã¯ãã¬ã¼ã¹ã§é¢æ°ãç¹å®ãããããªãã¾ãã
const factorial = function fac(n) {
return n < 2 ? 1 : n * fac(n - 1);
};
console.log(factorial(3)); // 6
颿°å¼ã¯ããã颿°ãå¥ã®é¢æ°ã®å¼æ°ã¨ãã¦æ¸¡ãå ´åã«ä¾¿å©ã§ããæ¬¡ã®ä¾ã§ã¯ãæåã®å¼æ°ã«é¢æ°ã2 çªç®ã®å¼æ°ã«é
åãåãåã map
颿°ãå®ç¾©ãã¦ãã¾ããããã¦ã颿°å¼ã§å®ç¾©ãã颿°ã§å¼ã³åºãã¾ãã
function map(f, a) {
const result = new Array(a.length);
for (let i = 0; i < a.length; i++) {
result[i] = f(a[i]);
}
return result;
}
const numbers = [0, 1, 2, 5, 10];
const cubedNumbers = map(function (x) {
return x * x * x;
}, numbers);
console.log(cubedNumbers); // [0, 1, 8, 125, 1000]
JavaScript ã§ã¯ãæ¡ä»¶ã«åºã¥ãã¦é¢æ°ãå®ç¾©ãããã¨ãã§ãã¾ããä¾ãã°æ¬¡ã®é¢æ°ã®å®ç¾©ã¯ã myFunc
ã¨ãã颿°ãã夿° num
ã 0
ã«çããå ´åã®ã¿å®ç¾©ãã¾ãã
let myFunc;
if (num === 0) {
myFunc = function (theObject) {
theObject.make = "Toyota";
};
}
ããã¾ã§èª¬æãã¦ãã颿°ã®å®ç¾©ã«å ãã¦ãFunction
ã³ã³ã¹ãã©ã¯ã¿ã¼ããeval()
ã®ãããªæååããã®é¢æ°ä½æã«ç¨ãããã¨ãã§ãã¾ãã
ã¡ã½ããã¯ããªãã¸ã§ã¯ãã®ããããã£ã§ãã颿°ã®ãã¨ã§ãããªãã¸ã§ã¯ãã¨ã¡ã½ããã«ã¤ãã¦è©³ããã¯ãããªãã¸ã§ã¯ããå©ç¨ãããã®ç« ãã覧ãã ããã
颿°ã®å¼ã³åºã颿°ãå®ç¾©ãã¦ãããã®é¢æ°ãå®è¡ãããããã§ã¯ããã¾ããã颿°ã®å®ç¾©ã¨ã¯ããã åã«é¢æ°ã«ååãã¤ãããã®é¢æ°ãå¼ã³åºãããã¨ãã«ä½ãããããæå®ãããã¨ã§ãã
颿°ã®å¼ã³åºãã¯ãæå®ãã弿°ãç¨ãã¦å®éã«æå®ãããåä½ãå®è¡ãã¾ããä¾ãã°ã square
ã¨ãã颿°ãå®ç¾©ããå ´åãæ¬¡ã®ããã«ãã¦å¼ã³åºããã¨ãã§ãã¾ãã
ãã®æã¯ 5
ã¨ãã弿°ã¨ã¨ãã«é¢æ°ãå¼ã³åºãã¾ãã颿°ã¯èªèº«ã®æãå®è¡ãã 25
ã¨ããå¤ãè¿ãã¾ãã
颿°ãå¼ã³åºãã¨ãã¯ã¹ã³ã¼ãå ã«ãªããã°ããã¾ããããæ¬¡ã®ä¾ã®ããã«ã颿°ã®å®£è¨ãå·»ãä¸ããï¼å¼ã³åºãããå¾ã«ç½®ãï¼ãã¨ãã§ãã¾ãã颿°å®£è¨ã®ã¹ã³ã¼ãã¯ãèªèº«ã宣è¨ããã颿°å ï¼ãããã¯æä¸ä½ã§å®£è¨ãããã®ã§ããã°ããã°ã©ã å ¨ä½ï¼ã«ãªãã¾ãã
颿°ã®å¼æ°ã¯ãæååãæ°å¤ã«éããã¦ã¯ãã¾ããããªãã¸ã§ã¯ãå
¨ä½ã颿°ã«æ¸¡ããã¨ãã§ãã¾ããshowProps()
颿° (ãªãã¸ã§ã¯ãã®å©ç¨ã®ç« ã§å®ç¾©) ã¯ããªãã¸ã§ã¯ãã弿°ã«ã¨ã颿°ã®ä¾ã§ãã
颿°ã¯ãã®é¢æ°èªèº«ãå¼ã³åºããã¨ãã§ãã¾ããä¾ãã°ãããã«éä¹ãè¨ç®ãã颿°ã示ãã¾ãã
function factorial(n) {
if (n === 0 || n === 1) {
return 1;
}
return n * factorial(n - 1);
}
1 ãã 5 ã¾ã§ã®éä¹ã®è¨ç®ã¯ã次ã®ããã«ãªãã¾ãã
console.log(factorial(1)); // 1
console.log(factorial(2)); // 2
console.log(factorial(3)); // 6
console.log(factorial(4)); // 24
console.log(factorial(5)); // 120
颿°ãå¼ã³åºãæ¹æ³ã¯ä»ã«ãããã¾ãã颿°ãåçã«å¼ã³åºãå¿ è¦ããã£ããã颿°ã®å¼æ°ã®æ°ãå¤åãããã颿°å¼ã³åºãã®ã³ã³ããã¹ããå®è¡æã«æ±ºå®ãããç¹å®ã®ãªãã¸ã§ã¯ãã«è¨å®ããå¿ è¦ããã£ããããå ´åãããããã¾ãã
颿°ã¯ããèªä½ããªãã¸ã§ã¯ãã§ãã â ããã¦ããããã®ãªãã¸ã§ã¯ãã¯ã¡ã½ãããæã£ã¦ãã¾ãã (Function
ãªãã¸ã§ã¯ããåç
§ãã¦ãã ããã) call()
and apply()
ã¡ã½ããã使ã£ã¦ããã®ç®çãéæãããã¨ãã§ãã¾ãã
以ä¸ã®ä¾ããã£ãã¨ãã¾ãã
console.log(square(5)); // 25
function square(n) {
return n * n;
}
颿° square()
ã宣è¨ãããåã«å¼ã³åºããã¦ãã¾ããããã®ã³ã¼ãã¯ã¨ã©ã¼ãªãå®è¡ããã¾ããããã¯ãJavaScript ã¤ã³ã¿ã¼ããªã¿ã¼ã颿°å®£è¨å
¨ä½ãç¾å¨ã®ã¹ã³ã¼ãã®å
é ã«å·»ãä¸ããããã§ãããããã£ã¦ãä¸è¨ã®ã³ã¼ãã¯æ¬¡ã®ã³ã¼ãã¨åçã§ãã
// ãã¹ã¦ã®é¢æ°å®£è¨ã¯ãäºå®ä¸ãã¹ã³ã¼ãã®æä¸ä½ã«ãã
function square(n) {
return n * n;
}
console.log(square(5)); // 25
颿°å·»ãä¸ãã¯é¢æ°å®£è¨ã§ã®ã¿ä½æ¥ãã颿°å¼ã§ã¯åä½ãã¾ãããæ¬¡ã®ã³ã¼ãã¯åä½ãã¾ããã
console.log(square(5)); // ReferenceError: Cannot access 'square' before initialization
const square = function (n) {
return n * n;
};
å帰
颿°ã¯èªèº«ãåç §ããå¼ã³åºããã¨ãã§ãã¾ãã颿°ãèªèº«ãåç §ããæ¹æ³ã¯ 3 種é¡ããã¾ãã颿°å¼ã¾ãã¯å®£è¨ã®ååããããã¯é¢æ°ãªãã¸ã§ã¯ããåç §ããã¹ã³ã¼ãå ã®å¤æ°ã«ãã£ã¦åç §ã§ãã¾ããä¾ãã°ã以ä¸ã®ãããªé¢æ°å®ç¾©ãèãã¦ã¿ã¾ãããã
const foo = function bar() {
// ããã«ã¯æãæ¥ã
};
颿°æ¬ä½å
ã§ã¯ã颿°èªä½ã bar
ã¾ã㯠foo
ã¨ãã¦åç
§ããbar()
ã¾ã㯠foo()
ã使ç¨ãã¦å¼ã³åºããã¨ãã§ãã¾ãã
èªèº«ãå¼ã³åºã颿°ã®ãã¨ãå台颿°ã¨è¨ãã¾ããããã¤ãã®ç¹ã§ãå帰ã¯ã«ã¼ãã«ä¼¼ã¦ãã¾ããã©ã¡ããåãã³ã¼ããä½åº¦ãå®è¡ãã¾ãããï¼ç¡éã«ã¼ããé²ããããã¨ããããç¡éå帰ãé²ãããã«ï¼æ¡ä»¶ãå¿ è¦ã§ãã
ä¾ãã°ã以ä¸ã®ã«ã¼ããèãã¦ã¿ã¦ãã ããã
let x = 0;
// "x < 10" ãã«ã¼ãã®æ¡ä»¶
while (x < 10) {
// ä½ããã®å¦çãè¡ã
x++;
}
å台颿°å®£è¨ã«å¤æãããã¨ãã§ãããã®é¢æ°ãå¼ã³åºããã¨ã§ç¶ãã¾ãã
function loop(x) {
// "x >= 10" ãçµäºæ¡ä»¶ ("!(x < 10)" ã¨åç)
if (x >= 10) {
return;
}
// ä½ããã®å¦çãè¡ã
loop(x + 1); // å帰å¼ã³åºã
}
loop(0);
䏿¹ã§ãåç´ãªå復ã«ã¼ãã§ã¯è¡ããªãã¢ã«ã´ãªãºã ãããã¾ããä¾ãã°ãããªã¼æ§é (ä¾ãã° DOM) ã®ãã¹ã¦ã®ãã¼ããåå¾ããå¦çã¯ãå帰ã使ãã¨ããç°¡åã§ãã
function walkTree(node) {
if (node === null) {
return;
}
// ãã¼ãã«å¯¾ãå¦çãè¡ã
for (let i = 0; i < node.childNodes.length; i++) {
walkTree(node.childNodes[i]);
}
}
颿° loop
ã¨æ¯è¼ããã¨ãå帰å¼ã³åºããã¨ã«ããã«å¤æ°ã®å帰å¼ã³åºããè¡ãã¾ãã
ã©ããªå帰ã¢ã«ã´ãªãºã ãå帰ã§ãªããã®ã«æ¸ãæãããã¨ãå¯è½ã§ããããã¸ãã¯ãã¯ããã«è¤éã«ãªããã¨ãå¤ãããã®ããã«ã¯ã¹ã¿ãã¯ã使ç¨ããå¿ è¦ãããã¾ãã
å®éãå帰èªä½ãã¹ã¿ãã¯ã使ç¨ãã¦ãã¾ãã颿°ã¹ã¿ãã¯ã§ãããã®ã¹ã¿ãã¯ã®ãããªåä½ã¯ã次ã®ä¾ã§è¦ããã¨ãã§ãã¾ãã
function foo(i) {
if (i < 0) {
return;
}
console.log(`begin: ${i}`);
foo(i - 1);
console.log(`end: ${i}`);
}
foo(3);
// åºå:
// begin: 3
// begin: 2
// begin: 1
// begin: 0
// end: 0
// end: 1
// end: 2
// end: 3
峿å®è¡é¢æ°å¼ (IIFE)
峿å®è¡é¢æ°å¼ (IIFE) ã¯ãå¼ã¨ãã¦å®ç¾©ããã颿°ãç´æ¥å¼ã³åºãã³ã¼ããã¿ã¼ã³ã§ããæ¬¡ã®ããã«è¦ã¦ããã¾ãã
(function () {
// ä½ããã
})();
const value = (function () {
// ä½ããã
return someValue;
})();
颿°ã夿°ã«ä¿åãã代ããã«ã颿°ã¯ããã«å¼ã³åºããã¾ããããã¯ã颿°ã®æ¬ä½ãè¨è¿°ããã®ã¨ã»ã¼åãã§ãããããã¤ãã®åºæã®å©ç¹ãããã¾ãã
詳ããã¯ãç¨èªéã®é ç®ã® IIFE ãåç §ãã¦ãã ããã
颿°ã¹ã³ã¼ãã¨ã¯ãã¼ã¸ã£é¢æ°ã®å é¨ã§å®£è¨ããã夿°ã¯ã颿°ã®å¤é¨ããã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãããããã¯ã夿°ã颿°ã®ã¹ã³ã¼ãå ã§ã®ã¿å®ç¾©ããã¦ããããã§ãããã®ä¸æ¹ã颿°ã¯èªèº«ãå®ç¾©ãããã¹ã³ã¼ãå ã§å®ç¾©ããã¦ãããã¹ã¦ã®å¤æ°ã颿°ã«ã¢ã¯ã»ã¹ã§ãã¾ãã è¨ãæããã¨ãã°ãã¼ãã«ã¹ã³ã¼ãã§å®ç¾©ããã颿°ã¯ãã°ãã¼ãã«ã¹ã³ã¼ãã§å®ç¾©ããããã¹ã¦ã®å¤æ°ã«ã¢ã¯ã»ã¹ã§ãã¾ãããã颿°ã®å é¨ã§å®£è¨ããã颿°ã¯ãèªèº«ã®è¦ªã¨ãªã颿°å ã§å®ç¾©ããããã¹ã¦ã®å¤æ°ãããã®é¢æ°ãã¢ã¯ã»ã¹æ¨©ãæã¤ä»ã®å¤æ°ã«ãã¢ã¯ã»ã¹ã§ãã¾ãã
颿°ã¯å¤æ°ã®ã¹ã³ã¼ããå½¢æãã¾ããã¤ã¾ãã颿°å ã§å®ç¾©ããã夿°ã¯ããã®é¢æ°ã®å¤é¨ããã¯ã¢ã¯ã»ã¹ã§ãã¾ããã颿°ã®ã¹ã³ã¼ãã¯ãããããä¸ã®ãã¹ã¦ã®ã¹ã³ã¼ãããç¶æ¿ããã¾ããä¾ãã°ãã°ãã¼ãã«ã¹ã³ã¼ãã§å®ç¾©ããã颿°ã¯ãã°ãã¼ãã«ã¹ã³ã¼ãã§å®ç¾©ããããã¹ã¦ã®å¤æ°ã«ã¢ã¯ã»ã¹ã§ãã¾ããå¥ã®é¢æ°å ã§å®ç¾©ããã颿°ãããã®è¦ªé¢æ°ã§å®ç¾©ããããã¹ã¦ã®å¤æ°ãããã³è¦ªé¢æ°ãã¢ã¯ã»ã¹ã§ãããã®ä»ã®å¤æ°ã«ã¢ã¯ã»ã¹ã§ãã¾ãã䏿¹ãè¦ªé¢æ°ï¼ããã³ãã®ä»ã®è¦ªã¹ã³ã¼ãï¼ã¯ãå é¨é¢æ°å ã§å®ç¾©ããã夿°ã颿°ã«ã¢ã¯ã»ã¹ã§ãã¾ãããããã«ãããå é¨é¢æ°å ã®å¤æ°ãä¸ç¨®ã®ã«ãã»ã«åããã¾ãã
// 以ä¸ã®å¤æ°ã¯ã°ãã¼ãã«ã¹ã³ã¼ãã§å®ç¾©
const num1 = 20;
const num2 = 3;
const name = "Chamakh";
// ãã®é¢æ°ã¯ã°ãã¼ãã«ã¹ã³ã¼ãã§å®ç¾©
function multiply() {
return num1 * num2;
}
console.log(multiply()); // 60
// å
¥ãåã«ãªã£ã¦ãã颿°ã®ä¾
function getScore() {
const num1 = 2;
const num2 = 3;
function add() {
return `${name} scored ${num1 + num2}`;
}
return add();
}
console.log(getScore()); // "Chamakh scored 5"
ã¯ãã¼ã¸ã£
颿°æ¬ä½ããã¯ãã¼ã¸ã£ãã¨ãå¼ã³ã¾ããã¯ãã¼ã¸ã£ã¯ãããã¤ãã®å¤æ°ãåç §ããã½ã¼ã¹ã³ã¼ãã®ä¸é¨ ï¼æãä¸è¬çã«ã¯é¢æ°ï¼ ã§ããããã®å¤æ°ã宣è¨ãããã¹ã³ã¼ããçµäºãã¦ãããã®å¤æ°ããè¨æ¶ããã¾ãã
ã¯ãã¼ã¸ã£ã¯é常ã親ã¹ã³ã¼ãã®å¯¿å½ãè¶ ãã¦å¤æ°ãè¨æ¶ãã¦ãããã¨ã示ãããã«ãå ¥ãåã«ãªã£ã颿°ã§è¡¨ç¾ããã¾ããããããå®éã«ã¯ãå ¥ãåã«ãªã£ã颿°ã¯å¿ è¦ããã¾ãããæè¡çã«ã¯ã JavaScript ã®ãã¹ã¦ã®é¢æ°ã¯ã¯ãã¼ã¸ã£ãå½¢æãã¦ãã¾ãããã ããä½ããã®æ å ±ãåå¾ããªããã®ããããã¯ãã¼ã¸ã£ã¯é¢æ°ã§ããå¿ è¦ãããã¾ããããæç¨ãªãã¯ãã¼ã¸ã£ã®éè¦ãªè¦ç´ ã¯ã次ã®ã¨ããã§ãã
次ã®ä¾ã¯ãã¯ãã¼ã¸ã£ã®å ¸åçãªä¾ã§ãã
// å¤å´ã®é¢æ°ã¯å¤æ° "name" ãå®ç¾©
const pet = function (name) {
const getName = function () {
// å
å´ã®é¢æ°ã¯å¤å´ã®é¢æ°ã®å¤æ° "name" ã«ã¢ã¯ã»ã¹å¯è½
return name;
};
return getName; // å
å´ã®é¢æ°ãè¿ããã¨ã§ãå¤å´ã®é¢æ°ã«å
¬éãã
};
const myPet = pet("Vivie");
console.log(myPet()); // "Vivie"
ä¸è¨ã®ã³ã¼ãããè¤éãªã³ã¼ãã«ãããã¨ãã§ãã¾ããå¤å´ã®é¢æ°ã®å é¨ã«ãã夿°ãæä½ããã¡ã½ãããå«ãããªãã¸ã§ã¯ããè¿ããã¨ãã§ãã¾ãã
const createPet = function (name) {
let sex;
const pet = {
// setName(newName) is equivalent to setName: function (newName)
// in this context
setName(newName) {
name = newName;
},
getName() {
return name;
},
getSex() {
return sex;
},
setSex(newSex) {
if (
typeof newSex === "string" &&
(newSex.toLowerCase() === "male" || newSex.toLowerCase() === "female")
) {
sex = newSex;
}
},
};
return pet;
};
const pet = createPet("Vivie");
console.log(pet.getName()); // Vivie
pet.setName("Oliver");
pet.setSex("male");
console.log(pet.getSex()); // male
console.log(pet.getName()); // Oliver
ä¸è¨ã®ä¾ã§ãå¤å´ã®é¢æ°ã®å¤æ° name
ã¯å
å´ã®é¢æ°ããã¢ã¯ã»ã¹ã§ããã¾ãå
å´ã®é¢æ°ãéããã«å
å´ã®å¤æ°ã¸ã¢ã¯ã»ã¹ããä»ã®æ¹æ³ã¯ããã¾ãããå
å´ã®é¢æ°ã®å
é¨å¤æ°ã¯ãå
å´ã®é¢æ°ã®å®å
¨ãªä¿åé åã¨ãã¦æ¯ãèãã¾ãããããã¯å
å´ã®é¢æ°ã¨é£åãããã¼ã¿ãããæ°¸ç¶çããã¤ãå®å
¨ã«ãä¿æãã¾ãã颿°ã¯å¤æ°ãå²ãå½ã¦ãå¿
è¦ãããªããã¾ãååãæã¤å¿
è¦ãããã¾ããã
const getCode = (function () {
const apiCode = "0]Eal(eh&2"; // å¤å´ã®é¢æ°ã夿´ã§ããªãããã«ãããã³ã¼ã
return function () {
return apiCode;
};
})();
console.log(getCode()); // "0]Eal(eh&2"
ä¸è¨ã®ã³ã¼ãã§ã¯ã IIFE ãã¿ã¼ã³ã使ç¨ãã¦ãã¾ãããã® IIFE ã¹ã³ã¼ãå
ã«ã¯ã2 ã¤ã®å¤ãã¤ã¾ã夿° apiCode
ã¨ãè¿ããã夿° getCode
ã«ä»£å
¥ãããç¡å颿°ãåå¨ãã¾ãã apiCode
ã¯ãè¿ãããç¡å颿°ã®ã¹ã³ã¼ãå
ã«ã¯ããã¾ãããããã°ã©ã ã®ä»ã®é¨åã«ã¯å±ãã¦ããªãããã getCode
颿°ä»¥å¤ã§ã¯ apiCode
ã®å¤ãèªã¿åãæ¹æ³ã¯ããã¾ããã
颿°ã¯ä¸è¨ã®ããã«ãå¤éã«å ¥ãåã«ãããã¨ãã§ãã¾ãã
A
) ã®ä¸ã«é¢æ° (B
) ãããã颿° (B
) ã®ä¸ã«é¢æ° (C
) ãããã¨ãã¾ããB
㨠C
ã¯ã¯ãã¼ã¸ã£ã¨ãªãã®ã§ã B
㯠A
ã«ã¢ã¯ã»ã¹ã§ãã C
㯠B
ã«ã¢ã¯ã»ã¹ã§ãã¾ããC
㯠A
ã«ã¢ã¯ã»ã¹å¯è½ãª B
ã«ã¢ã¯ã»ã¹ã§ããã®ã§ã C
㯠A
ã«ãã¢ã¯ã»ã¹ã§ãã¾ãããã®ããã«ãã¦ãã¯ãã¼ã¸ã£ã¯å¤éã¹ã³ã¼ããå°å ¥ã§ãã¾ããã¤ã¾ã颿°ã®ã¹ã³ã¼ããå帰çã«å å«ããã¦ããã®ã§ããããããã¹ã³ã¼ããã§ã¼ã³ãã¨å¼ã³ã¾ããæ¬¡ã®ä¾ãè¦ã¦ã¿ã¾ãããã
function A(x) {
function B(y) {
function C(z) {
console.log(x + y + z);
}
C(3);
}
B(2);
}
A(1); // 6 ããã°ã«åºåããã (1 + 2 + 3)
ãã®ä¾ã§ã¯ã颿° C
ã¯é¢æ° B
ã®å¼æ° y
ã¨é¢æ° A
ã®å¼æ° x
ã«ã¢ã¯ã»ã¹ãã¦ãã¾ãããªããããå¯è½ãã¨ããã¨ã
B
ã¯é¢æ° A
ã«å«ã¾ããã¯ãã¼ã¸ã£ã¨ãªã£ã¦ãã¾ã (ããªãã¡ã B
㯠A
ã®å¼æ°ã¨å¤æ°ã«ã¢ã¯ã»ã¹ã§ãã¾ã)ãC
ã¯é¢æ° B
ã«å«ã¾ããã¯ãã¼ã¸ã£ã¨ãªã£ã¦ãã¾ããC
ã®ã¯ãã¼ã¸ã£ã«ã¯ B
ãå«ã¾ãã B
ã®ã¯ãã¼ã¸ã£ã«ã¯ A
ãå«ã¾ãã¾ããã¤ã¾ãã C
ã®ã¯ãã¼ã¸ã£ã«ã¯ A
ãå«ã¾ãã¾ããããã¯ã C
ã B
㨠A
ã®å¼æ°ã夿°ã«ã¢ã¯ã»ã¹ã§ããã¨ãããã¨ãæå³ãã¦ãã¾ããè¨ãæããã°ã C
㯠B
㨠A
ã®ã¹ã³ã¼ããé çªã«é£çµãã¦ããã¨ãããã¨ã§ãããã®ä¸æ¹ã§ãéã¯æãç«ã¡ã¾ããã A
㯠C
ã«ã¢ã¯ã»ã¹ã§ãã¾ããããªããªã A
ã¯ã C
ã夿°ã®ä¸ã¤ã¨ãã¦æã£ã¦ãã B
ã®å¼æ°ã夿°ã«ã¯ã¢ã¯ã»ã¹ã§ããªãããã§ãããã®ããã« C
㯠B
ã®å¤ã«å¯¾ãã¦ã®ã¿éå
¬éã¨ãªã£ã¦ãã¾ãã
ã¯ãã¼ã¸ã£ä¸ã®ã¹ã³ã¼ãã«åãååã® 2 ã¤ã®å¼æ°ã夿°ãããå ´åãååã®è¡çªãçãã¾ããããå å´ã®ã¹ã³ã¼ããåªå ãããã®ã§ãæãå å´ã«ããã¹ã³ã¼ããæåªå ã«ãæãå¤å´ã®ã¹ã³ã¼ããæãä½ãåªå 度ã¨ãªãã¾ãããããã¹ã³ã¼ããã§ã¼ã³ã§ãããã§ã¼ã³ã®æåã¯æãå å´ã®ã¹ã³ã¼ããããã¦æå¾ã¯æãå¤å´ã®ã¹ã³ã¼ãã¨ãªãã¾ããæ¬¡ã®ä¾ãè¦ã¦ã¿ã¾ãããã
function outside() {
const x = 5;
function inside(x) {
return x * 2;
}
return inside;
}
console.log(outside()(10)); // 10 ã§ã¯ãªã 20 ãè¿ã
return x * 2
ã®æã§ã¯ãinside
ã®å¼æ° x
㨠outside
ã®å¤æ° x
ã®éã§ååã®ç«¶åãçºçãã¾ãããã®å ´åã®ã¹ã³ã¼ããã§ã¼ã³ã¯ãinside
=> outside
=> ã°ãã¼ãã«ãªãã¸ã§ã¯ãã¨ãªãã¾ãããããã£ã¦ãinside
ã®x
ãoutside
ã®x
ãããåªå
ããã10
(outside
ã®x
)ã§ã¯ãªãã20
(inside
ã®x
)ãè¿ããã¾ãã
颿°ã®å¼æ° (argument) ã¯ãé å風ãªãã¸ã§ã¯ãã§ç®¡çããã¾ãã颿°å ã§ã¯ã次ã®ããã«ãã¦æ¸¡ããã弿°ãæå®ãããã¨ãã§ãã¾ãã
ããã§ i
ã¯å¼æ°ã®é åºãè¡¨ãæ°ã§ã 0
ããå§ã¾ãã¾ãã颿°ã«æ¸¡ããã第 1 弿°ã¯ arguments[0]
ã¨ãªãã¾ãã弿°ã®ç·æ°ã¯ arguments.length
ã§è¡¨ããã¾ãã
arguments
ãªãã¸ã§ã¯ãã使ç¨ããã¨ãå®£è¨æã®å¼æ°ã®æ°ãããå¤ãã®å¼æ°ãç¨ãã¦é¢æ°ãå¼ã³åºããã¨ãã§ãã¾ããããã«ãã£ã¦é¢æ°ã«æ¸¡ã弿°ã®æ°ãåãã£ã¦ããããªãå ´åã«ãã°ãã°å½¹ç«ã¡ã¾ãã arguments.length
ã使ç¨ãããã¨ã§ãå®éã«é¢æ°ã«æ¸¡ããã弿°ã®æ°ãç¹å®ãããã¨ãã§ãã¾ããããã¦ã arguments
ãªãã¸ã§ã¯ãã使ç¨ãã¦å弿°ã«ã¢ã¯ã»ã¹ã§ãã¾ãã
ä¾ãã°ãè¤æ°ã®æååãé£çµãã颿°ãèãã¦ã¿ã¾ãããããã®é¢æ°ã®å¯ä¸ã®æ£å¼ãªå¼æ°ã¯ï¼é£çµããé ç®ãåºåãæåãæå®ããæååã§ãããã®é¢æ°ã¯æ¬¡ã®ããã«å®ç¾©ããã¦ãã¾ãã
function myConcat(separator) {
let result = ""; // ãªã¹ããåæåãã
// 弿°ã«ã¤ãã¦ç¹°ãè¿ã
for (let i = 1; i < arguments.length; i++) {
result += arguments[i] + separator;
}
return result;
}
ãã®é¢æ°ã«å¼æ°ãããã¤ã渡ããã¨ãã§ãã¾ããããã¦ãå弿°ãæååã®ããªã¹ããã«é£çµãã¾ãã
console.log(myConcat(", ", "red", "orange", "blue"));
// "red, orange, blue, "
console.log(myConcat("; ", "elephant", "giraffe", "lion", "cheetah"));
// "elephant; giraffe; lion; cheetah; "
console.log(myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley"));
// "sage. basil. oregano. pepper. parsley. "
ã¡ã¢: 夿° arguments
ã¯ãé
å風ã®å¤æ°ãã§ãããé
åã§ã¯ããã¾ãããæ·»åãæ°å¤ã§ãããã¨ã¨ length
ããããã£ããããã¨ã§ãé
å風ã¨ãªã£ã¦ã¯ãã¾ããããããé
åæä½ã®ã¡ã½ããã®ãã¹ã¦ãæã£ã¦ããããã§ã¯ããã¾ããã
ãããªãæ
å ±ã«ã¤ãã¦ã¯ãJavaScript ãªãã¡ã¬ã³ã¹ã® Function
ãªãã¸ã§ã¯ããã覧ãã ããã
ç¹æ®ãªç¨®é¡ã®å¼æ°ã®æ§æã 2 ã¤ããã¾ãããããããã©ã«ã弿°ã¨æ®ä½å¼æ°ã§ãã
ããã©ã«ã弿°JavaScript ã§ã¯ã颿°ã®å¼æ°ã¯æ¢å®ã§ undefined
ã¨ãªãã¾ããããããå¥ã®æ¢å®å¤ãè¨å®ããã¦ããã°ä¾¿å©ã ã¨ããç¶æ³ãããã§ããããããã©ã«ã弿°ãããã§å½¹ã«ç«ã¡ã¾ãã
以åãæ¢å®å¤ãè¨å®ããä¸è¬çãªæ¹æ³ã¯ã颿°ã®æ¬ä½ã§å¼æ°ã®å¤ããã¹ãããundefined
ã ã£ãå ´åã«ããå¤ãå²ãå½ã¦ããã¨ãããã®ã§ããã
以ä¸ã®ä¾ã§ã¯ã b
ã®å¤ãä¸ããããªãã£ãå ´åã a*b
ãè©ä¾¡ããéã«ãã®å¤ã¯ undefined
ã¨ãªãããã multiply
ãå¼ã³åºã㨠NaN
ãè¿ããã¾ããããããªããããã®ä¾ã® 2 è¡ç®ã§ãã®åé¡ãåé¿ãã¦ãã¾ãã
function multiply(a, b) {
b = typeof b !== "undefined" ? b : 1;
return a * b;
}
console.log(multiply(5)); // 5
ããã©ã«ã弿°ã使ãã°ã颿°æ¬ä½ã§ã®å¼æ°ãã§ãã¯ã¯ããå¿
è¦ããã¾ãããããããã¯ã颿°ã®æåã§åç´ã« b
ã« 1
ã代å
¥ãããã¨ãã§ãã¾ãã
function multiply(a, b = 1) {
return a * b;
}
console.log(multiply(5)); // 5
詳細ã«ã¤ãã¦ã¯ããªãã¡ã¬ã³ã¹ã®ããã©ã«ã弿°ãã覧ãã ããã
æ®ä½å¼æ°æ®ä½å¼æ°ã®æ§æã«ãã£ã¦ãä¸ç¹å®å¤æ°ã®å¼æ°ãé åã®ããã«è¡¨ããã¨ãã§ãã¾ãã
次ã®ä¾ã§ã¯ã2 ã¤ç®ããæå¾ã¾ã§ã®å¼æ°ãã¾ã¨ããã®ã«æ®ä½å¼æ°ã使ã£ã¦ãã¾ããããã¦æåã®å¼æ°ã使ã£ã¦ä¹ç®ãã¾ãã
function multiply(multiplier, ...theArgs) {
return theArgs.map((x) => multiplier * x);
}
const arr = multiply(2, 1, 2, 3);
console.log(arr); // [2, 4, 6]
ã¢ãã¼é¢æ°
ã¢ãã¼é¢æ°å¼ï¼å°æ¥ã® JavaScript ã§æ³å®ããã ->
æ§æã¨åºå¥ããããã«ãã¡ããã¢ãã¼é¢æ°ã¨ãå¼ã°ããï¼ã¯é¢æ°å¼ã¨æ¯è¼ãã¦ããçãæ§æãæã¡ãthis
ãarguments
ãsuper
ãnew.target
ã®å¤ãæã¡ã¾ãããã¢ãã¼é¢æ°ã¯å¸¸ã«ç¡å颿°ã§ãã
ã¢ãã¼é¢æ°ã®å°å
¥ã«ã¯ 2 ã¤ã®è¦ç´ ã絡ãã§ãã¾ããããã¯ç縮形ã®é¢æ°ã¨ this
ã¨ã®çµã³ã¤ãããªããã¨ã§ãã
颿°ãã¿ã¼ã³ã«ãã£ã¦ã¯ãç縮形ã®é¢æ°ããã£ã¦ã¤ãã§ããæ¯è¼ãã¦ã¿ã¾ãããã
const a = ["Hydrogen", "Helium", "Lithium", "Beryllium"];
const a2 = a.map(function (s) {
return s.length;
});
console.log(a2); // [8, 6, 7, 9]
const a3 = a.map((s) => s.length);
console.log(a3); // [8, 6, 7, 9]
ç¬èªã® this ãæããªã
ã¢ãã¼é¢æ°ã®å°å ¥ä»¥åã¯ããã¹ã¦ã®æ°ãã颿°ã«ã¯ç¬èªã® this å¤ãå®ç¾©ããã¦ãã¾ãã (ã³ã³ã¹ãã©ã¯ã¿ã¼ã®å ´åã¯æ°ãããªãã¸ã§ã¯ãã«ã strict ã¢ã¼ã ã®é¢æ°å¼ã³åºãã®å ´å㯠undefined ã«ã颿°ãããªãã¸ã§ã¯ãã®ã¡ã½ãããã¨ãã¦å¼ã³åºãããå ´åã¯ãã®åºåºãªãã¸ã§ã¯ãã«ãã¨ãã£ãããã«) ãããã¯ãªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã«ã¨ã£ã¦ã¯åä»ã§ãã
function Person() {
// ãã® Person() ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯èªèº«ã `this` ã¨å®ç¾©ãã¾ãã
this.age = 0;
setInterval(function growUp() {
// strict ã¢ã¼ãã§ãªãå ´åããã® growUp() 颿°ã¯
// Person() ã³ã³ã¹ãã©ã¯ã¿ã¼ã«ããå®ç¾©ã¨ã¯ç°ãªãã
// ã°ãã¼ãã«ãªãã¸ã§ã¯ãã `this` ã¨ãã¦å®ç¾©ãã¾ãã
this.age++;
}, 1000);
}
const p = new Person();
ECMAScript 3/5 ã§ã¯ãthis
ã®å¤ãã¢ã¯ã»ã¹å¯è½ãªå¥ã®å¤ã«å²ãå½ã¦ããã¨ã§ãã®åé¡ã解決ãã¾ãã
function Person() {
// `self` ã®ä»£ããã« `that` ãé¸ã¶äººããã¾ãã
// ã©ã¡ãã䏿¹ãé¸ã³ããã¡ãã ãã使ãããã«ãã¾ãããã
const self = this;
self.age = 0;
setInterval(function growUp() {
// ãã®ã³ã¼ã«ããã¯ã¯ããã®å¤ãæå¾
éãã®ãªãã¸ã§ã¯ããæã
// 夿° `self` ãåç
§ãã¦ãã¾ãã
self.age++;
}, 1000);
}
代ããã«ãæç¸é¢æ°ã使ã£ã¦å¤æ°ãæç¸ããã° growUp()
颿°ã«é©å㪠this
ãæ¸¡ããã¨ãã§ãã¾ãã
ã¢ãã¼é¢æ°ã¯èªèº«ã® this
ãæã¡ã¾ãããã¤ã¾ã颿°ãåãå²ãå®è¡ã³ã³ããã¹ãã® this
ã®å¤ã使ããã¾ãããã®ãããä¸è¨ã®ã³ã¼ãã§ã¯ãsetInterval
ã«æ¸¡ããã颿°å
ã® this
ã¯ããããåãå²ã颿°ã® this
ã¨åãå¤ãæã¡ã¾ãã
function Person() {
this.age = 0;
setInterval(() => {
this.age++; // `this` ã¯ç確㫠person ãªãã¸ã§ã¯ããåç
§ãã
}, 1000);
}
const p = new Person();
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