Baseline Widely available *
ä¸è¬çã«è¨ãã¨ã颿°ã¨ã¯å¤é¨ (å帰ã®å ´åã¯å é¨) ãã å¼ã³åºã ãã¨ã®ã§ããããµãããã°ã©ã ãã§ããããã°ã©ã ãã®ãã®ã®ããã«ã颿°ã¯é¢æ°æ¬ä½ (function body) ã¨å¼ã°ããé£ç¶ããæã§æ§æããã¾ããå¤ã颿°ã«æ¸¡ããã¨ãã§ãã颿°ã¯å¤ãè¿ããã¨ãã§ãã¾ãã
JavaScript ã«ããã¦ã颿°ã¯ç¬¬ä¸ç´ãªãã¸ã§ã¯ãã§ããããªãã¡ã颿°ã¯ãªãã¸ã§ã¯ãã§ãããä»ã®ãããããªãã¸ã§ã¯ãã¨åãããã«æä½ãããæ¸¡ããããããã¨ãã§ãã¾ããå
·ä½çã«ã¯ã颿°ã¯ Function
ãªãã¸ã§ã¯ãã§ãã
ãã詳細ãªä¾ã解説ã«ã¤ãã¦ã¯ãJavaScript ã®é¢æ°ã®ã¬ã¤ããåç §ãã¦ãã ããã
解説JavaScript ã«ããããã¹ã¦ã®é¢æ°ã¯ãå®éã«ã¯ Function
ãªãã¸ã§ã¯ãã§ããFunction
ãªãã¸ã§ã¯ãã®ããããã£ã¨ã¡ã½ããã«ã¤ãã¦ã®æ
å ±ã¯ Function
ãã覧ãã ããã
åæå¤ä»¥å¤ã®å¤ãè¿ãããã«ã¯ãè¿ãå¤ãæå®ãã return
æã颿°å
ã«ãªãã¦ã¯ãªãã¾ãããreturn
æãæããªã颿°ã¯æ¢å®å¤ãè¿ãã¾ããã³ã³ã¹ãã©ã¯ã¿ã¼ã new
ãã¼ã¯ã¼ãã¨ã¨ãã«å¼ã³åºãããå ´åããã® this
弿°ãåæå¤ã¨ãªãã¾ãããã以å¤ã®ãã¹ã¦ã®é¢æ°ãæ¢å®ã§è¿ãå¤ã¯ undefined
ã§ãã
颿°ã®ä»®å¼æ° (parameter) ã«ã¯ã颿°å¼ã³åºãã«ããã¦å®å¼æ° (argument) ãæ¸¡ããã¾ããå®å¼æ°ã¯ã颿°ã«å¤æ¸¡ãããã¾ãã颿°ã®ä¸ã§å¼æ°ã®å¤ã夿´ãã¦ãããã®å¤æ´ã¯ã°ãã¼ãã«ã¹ã³ã¼ããããã¯å¼ã³åºãå ã®é¢æ°å ã«ã¯åæ ããã¾ããããªãã¸ã§ã¯ãåç §ããå¤ãã§ããããã¡ãã¯ç¹å¥ã§ããåç §ããã¦ãããªãã¸ã§ã¯ãã®ããããã£ã颿°ã®ä¸ã§å¤æ´ããã¨ã次ã®ä¾ã«ããããã«ããã®å¤æ´ã颿°ã®å¤é¨ããè¦ããã¨ãã§ãã¾ãã
/* 颿° 'myFunc' ãå®£è¨ */
function myFunc(theObject) {
theObject.brand = "Toyota";
}
/*
* 夿° 'mycar' ã宣è¨
* æ°ãããªãã¸ã§ã¯ãã®çæã¨åæå
* 'mycar' ã¸ã®åç
§ããªãã¸ã§ã¯ãã«ä»£å
¥
*/
var mycar = {
brand: "Honda",
model: "Accord",
year: 1998,
};
/* 'Honda' ãåºå */
console.log(mycar.brand);
/* ãªãã¸ã§ã¯ãåç
§ã颿°ã«æ¸¡ã */
myFunc(mycar);
/*
* ãªãã¸ã§ã¯ãã® 'brand' ããããã£ã®å¤ã¯é¢æ°ã«ãã£ã¦
* 夿´ãããã®ã§ 'Toyota' ã¨åºåããã
*/
console.log(mycar.brand);
this
ãã¼ã¯ã¼ãã¯ç¾å¨å®è¡ä¸ã®é¢æ°ãåç
§ãã¾ããããã£ã¦ããã®é¢æ°æ¬ä½ã®ä¸ã§ãã£ã¦ããååã«ãã£ã¦ Function
ãªãã¸ã§ã¯ããåç
§ããªããã°ãªãã¾ããã
颿°ãå®ç¾©ããã®ã«ã¯ããã¤ãã®æ¹æ³ãããã¾ãã
颿°å®£è¨ (function
æ)
颿°ã宣è¨ããããã®ç¹æ®ãªæ§æãããã¾ãã(詳細㯠function æãåç §)
function name([param[, param[, ... param]]]) {
statements
}
name
颿°åã§ãã
param
颿°ã«æ¸¡ããã弿°ã®ååã§ãã
statements
颿°ã®æ¬ä½ãæ§æããæã§ãã
function
å¼)
颿°å¼ã¯ã颿°å®£è¨ã¨ä¼¼ã¦ãããåãæ§æãæã£ã¦ãã¾ã (詳細ã¯é¢æ°å¼ãåç §)ã颿°å¼ã¯ãã大ããªå¼ã®ä¸é¨ã«ãªããã¨ãããã¾ãããååä»ããã®é¢æ°å¼ãå®ç¾©ãããã¨ãã§ãã¾ã (ä¾ãã°ãã®ååã¯ã³ã¼ã«ã¹ã¿ãã¯å ã§ä½¿ãããããããã¾ãã) ãããç¡åã®ã颿°å¼ãå®ç¾©ãããã¨ãã§ãã¾ãã颿°å¼ã¯ã¹ã³ã¼ãã®éå§æã«ãå·»ãä¸ãããããªãã®ã§ãã³ã¼ãå ã§ããããç»å ´ããããåã«ä½¿ç¨ãããã¨ã¯ã§ãã¾ããã
function [name]([param[, param[, ... param]]]) {
statements
}
name
颿°åãçç¥ãããã¨ãã§ãããã®å ´åã¯é¢æ°ã¯ç¡å颿°ã¨è¦ãªããã¾ãã
param
颿°ã«æ¸¡ããã弿°ã®ååã§ãã
statements
颿°ã®æ¬ä½ãæ§æããæã§ãã
以ä¸ã¯ç¡åã®é¢æ°å¼ã®ä¾ã§ã (name
ã使ããã¦ããªã)ã
var myFunction = function () {
statements;
};
å®ç¾©ã®ä¸ã§ååãæä¾ãããã¨ã§ãååä»ãã®é¢æ°å¼ãä½ããã¨ãå¯è½ã§ãã
var myFunction = function namedFunction() {
statements;
};
ååä»ãã®é¢æ°å¼ãä½ããã¨ã®å©ç¹ã® 1 ã¤ã¯ãã¨ã©ã¼ã«ééããã¨ããã¹ã¿ãã¯ãã¬ã¼ã¹ããã®é¢æ°ã®ååãå«ãããããã¨ã©ã¼ã®çºçæºããã容æã«ç¹å®ã§ããã¨ãããã¨ã§ãã
ããã¾ã§è¦ã¦ããããã«ãã©ã¡ãã®ä¾ã function
ãã¼ã¯ã¼ãããéå§ããã¦ãã¾ããã function
ããéå§ããã«é¢æ°ãå«ãã§ããæã颿°å¼ã§ãã
颿°ãä¸åº¦ã ã使ãããã¨ããä¸è¬çãªãã¿ã¼ã³ã峿å®è¡é¢æ°å¼ (IIFE, Immediately Invoked Function Expression) ã§ãã
(function () {
statements;
})();
峿å®è¡é¢æ°å¼ã¯ã颿°ã宣è¨ããç´å¾ã«å®è¡ãã颿°å¼ã§ãã
ã¸ã§ãã¬ã¼ã¿ã¼é¢æ°å®£è¨ (function*
æ)
ã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ã®å®£è¨ã®ããã®ç¹å¥ãªæ§æã§ã (詳細㯠function* æ
ãåç
§ãã¦ãã ãã)ã
function* name([param[, param[, ... param]]]) {
statements
}
name
颿°åã
param
颿°ã«æ¸¡ããã弿°ã®ååã§ãã
statements
颿°ã®æ¬ä½ãæ§æããæã
function*
å¼)
ã¸ã§ãã¬ã¼ã¿ã¼é¢æ°å¼ã¯ãã¸ã§ãã¬ã¼ã¿ã¼é¢æ°å®£è¨ã¨ä¼¼ã¦ãããåãæ§æãæã£ã¦ãã¾ã ï¼è©³ç´°ã¯ function* å¼
ãåç
§ãã¦ãã ããï¼ã
function* [name]([param[, param[, ... param]]]) {
statements
}
name
颿°åãçç¥ãããã¨ãã§ãããã®å ´å颿°ã¯ç¡å颿°ã¨è¦ãªããã¾ãã
param
颿°ã«æ¸¡ããã弿°ã®ååã§ãã
statements
颿°ã®æ¬ä½ãæ§æããæã§ãã
ã¢ãã¼é¢æ°å¼ã¯ããçãæ§æã§ã this
å¤ãèªå½çã«çµåãã¾ã (詳細ã¯ã¢ãã¼é¢æ°ãåç
§)ã
([param[, param]]) => {
statements
}
param => expression
param
弿°ã®ååã弿°ã 0 åã®å ´å㯠()
ã§ç¤ºããã¨ãå¿
è¦ã§ãã弿°ã 1 åã®å ´åã®ã¿ã丸æ¬å¼§ã¯å¿
é ã§ã¯ããã¾ããã(ä¾ãã° foo => 1
)
statements
ã¾ã㯠expression
è¤æ°ã®æã¯ä¸æ¬å¼§ã§æ¬ããªããã°ãªãã¾ãããåä¸ã®å¼ã§ã¯ã䏿¬å¼§ã¯å¿ é ã§ã¯ããã¾ãããå¼ã¯ã颿°ã®æé»çãªè¿å¤ã§ãããã¾ãã
Function
ã³ã³ã¹ãã©ã¯ã¿ã¼
ã¡ã¢: Function
ã³ã³ã¹ãã©ã¯ã¿ã¼ã«ãã颿°ã®çæã¯æ¨å¥¨ããã¾ãããããã¯ãæååã¨ãã¦é¢æ°æ¬ä½ãå¿
è¦ã§ãããJS ã¨ã³ã¸ã³ã«ããæé©åã妨ããããä»ã®åé¡ãå¼ãèµ·ããããããå ´åãããããã§ãã
ä»ã®ãã¹ã¦ã®ãªãã¸ã§ã¯ãã¨åãããã«ãnew
æ¼ç®åã使ã£ã¦ Function
ãªãã¸ã§ã¯ãã使ãããã¨ãã§ãã¾ãã
new Function(arg1, arg2, ...argN, functionBody);
arg1, arg2, ... argN
颿°ã§ä»®å¼æ°åã¨ãã¦ä½¿ãããã0 å以ä¸ã®ååããããããã妥å½ãª JavaScript èå¥åã«ç¸å½ããæååããããã¯ãããã£ãæååã®ã«ã³ãã§åå²ããããªã¹ãã§ãªãã¦ã¯ãªãã¾ããã
functionBody
颿°å®ç¾©ãæ§æãã JavaScript æãå«ãæååã
Function
ã³ã³ã¹ãã©ã¯ã¿ã¼ã颿°ã¨ã㦠(new
æ¼ç®åã使ããã«) å¼ã³åºãã¦ããã³ã³ã¹ãã©ã¯ã¿ã¼ã¨ãã¦å¼ã³åºãã®ã¨åã广ãããã¾ãã
GeneratorFunction
ã³ã³ã¹ãã©ã¯ã¿ã¼
ã¡ã¢: GeneratorFunction
ã¯ã°ãã¼ãã«ãªãã¸ã§ã¯ãã§ã¯ããã¾ããããã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ã®ã¤ã³ã¹ã¿ã³ã¹ããå¾ããã¨ãã§ãã¾ã (詳細㯠GeneratorFunction
ãåç
§ãã¦ãã ãã)ã
ã¡ã¢: GeneratorFunction
ã³ã³ã¹ãã©ã¯ã¿ã¼ã«ãã颿°ã®çæã¯æ¨å¥¨ããã¾ãããããã¯ãæååã¨ãã¦é¢æ°æ¬ä½ãå¿
è¦ã§ãJS ã¨ã³ã¸ã³ã«ããæé©åã妨ããããä»ã®åé¡ãå¼ãèµ·ããããããå ´åãããããã§ãã
ä»ã®ãã¹ã¦ã®ãªãã¸ã§ã¯ãã¨åãããã«ã new
æ¼ç®åã使ã£ã¦ GeneratorFunction
ãªãã¸ã§ã¯ãã使ãããã¨ãã§ãã¾ãã
new GeneratorFunction(arg1, arg2, ...argN, functionBody);
arg1, arg2, ... argN
颿°ã§ä»®å¼æ°åã¨ãã¦ä½¿ãããã0 å以ä¸ã®ååããããããã妥å½ãª JavaScript èå¥åã«ç¸å½ããæååããããã¯ãããã£ãæååã®ã«ã³ãã§åå²ããããªã¹ãã§ãªãã¦ã¯ãªãã¾ãããä¾ãã° "x
"ã"theValue
"ã"a,b
" ãªã©ã§ãã
functionBody
颿°å®ç¾©ãæ§æãã JavaScript æãå«ãæååã§ãã
Function
ã³ã³ã¹ãã©ã¯ã¿ã¼ã颿°ã¨ã㦠(new
æ¼ç®åã使ããã«) å¼ã³åºãã¦ããã³ã³ã¹ãã©ã¯ã¿ã¼ã¨ãã¦å¼ã³åºãã®ã¨åã广ãããã¾ãã
颿°ã®ããã©ã«ã弿°ã§ã颿°ã«å¤ã渡ãããªãã£ãå ´åã undefined
ãæ¸¡ãããå ´åã«ãæ¢å®å¤ã§åæåãããå½¢å¼ä¸ã®å¼æ°ãæå®ã§ãã¾ãã詳細ã¯ããã©ã«ã弿°ãåç
§ãã¦ãã ããã
æ®ä½å¼æ°ã¨ã¯ãä¸ç¹å®å¤æ°ã®å¼æ°ãé åã¨ãã¦åãåãæ§æã§ããè©³ç´°ã¯æ®ä½å¼æ°ãåç §ãã¦ãã ããã
arguments
ãªãã¸ã§ã¯ã
arguments
ãªãã¸ã§ã¯ãã使ã£ã¦ã颿°å
é¨ã§é¢æ°ã®å¼æ°ãåç
§ãããã¨ãã§ãã¾ããarguments ãåç
§ãã¦ãã ããã
arguments
: ç¾å¨å®è¡ä¸ã®é¢æ°ã«æ¸¡ããã弿°ãæ ¼ç´ããé
å風ãªãã¸ã§ã¯ããarguments.callee
: ç¾å¨å®è¡ä¸ã®é¢æ°ãarguments.caller
: ç¾å¨å®è¡ä¸ã®é¢æ°ãå¼ã³åºãã颿°ãarguments.length
: 颿°ã«æ¸¡ããã弿°ã®æ°ãã²ãã¿ã¼ (ã¢ã¯ã»ãµã¼ã¡ã½ãã) ããã³ã»ãã¿ã¼ (ãã¥ã¼ãã¼ã¿ã¼ã¡ã½ãã) ã¯ãæ¨æºçµã¿è¾¼ã¿ãªãã¸ã§ã¯ãã§ãã¦ã¼ã¶ã¼å®ç¾©ãªãã¸ã§ã¯ãã§ããæ°ããããããã£ã®è¿½å ã«å¯¾å¿ãã¦ããã°å®ç¾©ãããã¨ãã§ãã¾ããã²ãã¿ã¼ã¨ã»ãã¿ã¼ãå®ç¾©ããããã®æ§æã¯ããªãã¸ã§ã¯ããªãã©ã«æ§æã使ç¨ãã¾ãã
ãªãã¸ã§ã¯ãã®ããããã£ãããã®ããããã£ãæ¤ç´¢ãããã¨ãã«å¼ã³åºããã颿°ã«æç¸ãã¾ãã
ãããªãã¸ã§ã¯ãã®ããããã£ãããã®ããããã£ã«ä»£å ¥ãããã¨ããã¨ãã«å¼ã³åºããã颿°ã«çµã³ã¤ãã¾ãã
ECMAScript 2015 ããã¯ãç¬èªã®ã¡ã½ããããã²ãã¿ã¼ã¨ã»ãã¿ã¼ã«ä¼¼ãããçãæ§æã§å®ç¾©ãããã¨ãã§ãã¾ãã詳細ã¯ã¡ã½ããå®ç¾©ãåç §ãã¦ãã ããã
var obj = {
foo() {},
bar() {},
};
ã³ã³ã¹ãã©ã¯ã¿ã¼ã¨é¢æ°å®£è¨ã¨é¢æ°å¼
以ä¸ã®ãã®ãæ¯è¼ãã¦ã¿ã¦ä¸ããã
Function
ã³ã³ã¹ãã©ã¯ã¿ã¼ã«ãã£ã¦å®ç¾©ããã夿° multiply
ã«ä»£å
¥ããã颿°ã§ãã
var multiply = new Function("x", "y", "return x * y");
multiply
ã¨å½åããã颿°ã®é¢æ°å®£è¨ã§ãã
function multiply(x, y) {
return x * y;
} // ããã«ã»ãã³ãã³ã¯å¿
è¦ããã¾ãã
夿° multiply
ã«ä»£å
¥ããããç¡å颿°ã®é¢æ°å¼ã§ãã
var multiply = function (x, y) {
return x * y;
};
夿° multiply
ã«ä»£å
¥ããããfunc_name
ã¨å½åããã颿°å¼ã§ãã
var multiply = function func_name(x, y) {
return x * y;
};
ç¸éç¹
ãããã¯ãã¹ã¦ãããããåãåãããã¾ãããããã¤ãå¾®å¦ã«ç°ãªãç¹ãããã¾ãã
颿°åã¨é¢æ°ã代å
¥ããã夿°ã®éã«ã¯éããããã¾ãã颿°åã¯å¤ãããã¨ãã§ãã¾ãããã颿°ã代å
¥ããã夿°ã¯å代å
¥ãããã¨ãã§ãã¾ãã颿°åã¯é¢æ°æ¬ä½ã®å
é¨ã§ã®ã¿ä½¿ç¨ãããã¨ãã§ãã¾ãã颿°æ¬ä½ã®å¤å´ã§ããã使ç¨ãããã¨ããã¨ã¨ã©ã¼ (ãã®é¢æ°åãããããåã« var
æã«ãã£ã¦å®£è¨ããã¦ããã° undefined
) ã«ãªãã¾ããä¾ãã°ã
var y = function x() {};
alert(x); // throws an error
颿°å㯠Function
ã® toString ã¡ã½ããã«ãã£ã¦ã·ãªã¢ã©ã¤ãºããã¨ãã«ãç¾ãã¾ãã
䏿¹ã颿°ãä»£å ¥ããã夿°ã¯ãã®ã¹ã³ã¼ãå ã§ã®ã¿æå¹ã§ããã®ã¹ã³ã¼ãã¯é¢æ°ã宣è¨ãããã¹ã³ã¼ããå«ãã§ãããã¨ãä¿è¨¼ããã¦ãã¾ãã
4 ã¤ç®ã®ä¾ã«ããããã«ã颿°åã¯ãã®é¢æ°ãä»£å ¥ããã夿°ã¨éã£ã¦ãã¦ãæ§ãã¾ãããäºãã®éã«é¢é£æ§ã¯ããã¾ããã颿°å®£è¨ã¯åæã«ãã®é¢æ°åã¨åãååã®å¤æ°ã使ãã¾ãããã£ã¦ã颿°å¼ã§å®ç¾©ããããã®ã¨éã£ã¦ã颿°å®£è¨ã§å®ç¾©ããã颿°ã¯å®ç¾©ãããã¹ã³ã¼ãå ã§ãããã®ååã«ãã£ã¦ã¢ã¯ã»ã¹ã§ãã¾ãã
new Function
ã«ãã£ã¦å®ç¾©ããã颿°ã¯é¢æ°åãæã¡ã¾ãããããããJavaScript ã¨ã³ã¸ã³ã® SpiderMonkey ã§ã¯ããã®é¢æ°ãã·ãªã¢ã©ã¤ãºãããå½¢å¼ã«ãã㨠"anonymous" ã¨ããååãæã£ã¦ãããã®ããã«è¡¨ç¤ºããã¾ããä¾ãã°ãalert(new Function())
ã¯ãã®ããã«åºåããã¾ãã
ãã®é¢æ°ã¯å®éã«ã¯ååãæã£ã¦ããªãã®ã§ãanonymous
ã¯é¢æ°å
é¨ã§ã¢ã¯ã»ã¹ã§ãã夿°ã§ã¯ããã¾ãããä¾ãã°ãæ¬¡ã®æã¯ã¨ã©ã¼ã«ãªãã¾ãã
var foo = new Function("alert(anonymous);");
foo();
颿°å¼ã Function
ã³ã³ã¹ãã©ã¯ã¿ã¼ã§å®ç¾©ããããã®ã¨ã¯éãã颿°å®£è¨ã§å®ç¾©ããã颿°ã¯ã颿°èªä½ã宣è¨ãããåã«ä½¿ç¨ãããã¨ãã§ãã¾ããä¾ãã°ã
foo(); // FOO! ã¨ã¢ã©ã¼ã表示
function foo() {
alert("FOO!");
}
颿°å¼ã§å®ç¾©ããã颿°ã¯ç¾å¨ã®ã¹ã³ã¼ããç¶æ¿ãã¾ããã¤ã¾ãã颿°ãã¯ãã¼ã¸ã£ãå½¢æãã¾ãã䏿¹ãFunction
ã³ã³ã¹ãã©ã¯ã¿ã¼ã§å®ç¾©ããã颿°ã¯ (ãããã颿°ãç¶æ¿ãã) ã°ãã¼ãã«ã¹ã³ã¼ã以å¤ã¯ã©ããªã¹ã³ã¼ããç¶æ¿ãã¾ããã
/*
* Declare and initialize a variable 'p' (global)
* and a function 'myFunc' (to change the scope) inside which
* declare a varible with same name 'p' (current) and
* define three functions using three different ways:-
* 1. function declaration
* 2. function expression
* 3. function constructor
* each of which will log 'p'
*/
var p = 5;
function myFunc() {
var p = 9;
function decl() {
console.log(p);
}
var expr = function () {
console.log(p);
};
var cons = new Function("\tconsole.log(p);");
decl();
expr();
cons();
}
myFunc();
/*
* Logs:-
* 9 - for 'decl' by function declaration (current scope)
* 9 - for 'expr' by function expression (current scope)
* 5 - for 'cons' by Function constructor (global scope)
*/
颿°å¼ã¨é¢æ°å®£è¨ã§å®ç¾©ããã颿°ã¯ä¸åº¦ããè§£æããã¾ããããFunction
ã³ã³ã¹ãã©ã¯ã¿ã¼ã§å®ç¾©ããã颿°ã¯ããã§ã¯ããã¾ãããã¤ã¾ããFunction
ã³ã³ã¹ãã©ã¯ã¿ã¼ã«æ¸¡ããã颿°æ¬ä½ã表ãæååããè©ä¾¡ããããã³ã«å¿
ãè§£æããã¾ãã颿°å¼ã¯æ¯åã¯ãã¼ã¸ã£ã使ãã¾ããã颿°æ¬ä½ã¯åè§£æãããªãã®ã§ã"new Function(...)
" ããã¯é¢æ°å¼ã®æ¹ãã¾ã é«éã§ãããããã£ã¦ Function
ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ã§ããéãé¿ããã¹ãã§ãããã
ãã ããFunction
ã³ã³ã¹ãã©ã¯ã¿ã¼ã®æååãè§£æãããã¨ã§çæããã颿°å
ã§å
¥ãåã«ããã¦ãã颿°å¼ã颿°å®£è¨ã¯ãç¹°ãè¿ãè§£æãããªããã¨ã«æ³¨æãã¦ãã ãããä¾ãã°ã
var foo = new Function(
"var bar = 'FOO!';\nreturn(function() {\n\talert(bar);\n});",
)();
foo(); // 颿°æ¬ä½ã®æååã§ "function() {\n\talert(bar);\n}" ã®é¨åã¯åè§£æããã¾ãã
颿°å®£è¨ã¯ã¨ã¦ãç°¡åã« (ãã°ãã°æå³ããã«) 颿°å¼ã«å¤åãã¾ãã颿°å®£è¨ã¯ä»¥ä¸ã®ãããªã¨ãã«ã¯é¢æ°å®£è¨ã§ã¯ãªããªãã¾ãã
var x = 0; // ã½ã¼ã¹è¦ç´
if (x === 0) {
// ã½ã¼ã¹è¦ç´
x = 10; // ã½ã¼ã¹è¦ç´ ã§ã¯ãªã
function boo() {} // ã½ã¼ã¹è¦ç´ ã§ã¯ãªã
}
function foo() {
// ã½ã¼ã¹è¦ç´
var y = 20; // ã½ã¼ã¹è¦ç´
function bar() {} // ã½ã¼ã¹è¦ç´
while (y === 10) {
// ã½ã¼ã¹è¦ç´
function blah() {} // ã½ã¼ã¹è¦ç´ ã§ã¯ãªã
y++; // ã½ã¼ã¹è¦ç´ ã§ã¯ãªã
}
}
ä¾
// 颿°å®£è¨
function foo() {}
// 颿°å¼
(function bar() {});
// 颿°å¼
x = function hello() {};
if (x) {
// 颿°å¼
function world() {}
}
// 颿°å®£è¨
function a() {
// 颿°å®£è¨
function b() {}
if (0) {
// 颿°å¼
function c() {}
}
}
ãããã¯ã¬ãã«é¢æ°
strict ã¢ã¼ãã§ã¯ ES2015 ããããããã¯å ã®é¢æ°ã¯ãã®ãããã¯ã«æ°ããã¹ã³ã¼ããå½¢æãã¾ãã ES2015 ããåã§ã¯ããããã¯ã¬ãã«é¢æ°ã¯ strict ã¢ã¼ãã§ã¯ç¦æ¢ããã¦ãã¾ãã
"use strict";
function f() {
return 1;
}
{
function f() {
return 2;
}
}
f() === 1; // true
// strict ã¢ã¼ã以å¤ã§ã¯ f() === 2
strict ã³ã¼ã以å¤ã«ããããããã¯ã¬ãã«é¢æ°
ä¸è¨ã§è¨ãã°ã使ããªãã§ãã ããã
strict ã³ã¼ã以å¤ã§ã¯ããããã¯å ã®é¢æ°å®£è¨ã¯å¥å¦ãªåä½ããã¾ããæ¬¡ã®ä¾ãè¦ã¦ãã ããã
if (shouldDefineZero) {
function zero() {
// å±éº: äºææ§ãªã¹ã¯
console.log("This is zero.");
}
}
ES2015 ã§ã¯ shouldDefineZero
ã false ã®å ´åããã®ãããã¯ãå®è¡ããããã¨ã¯ãªãã®ã§ãzero
ã¯æ±ºãã¦å®ç¾©ãããªãã¨ããã¦ãã¾ããããããããã¯æ¨æºã«ããã¦æ°ãããã¼ãã§ããæ´å²çã«ã¯ããã®ãã¨ã¯ä»æ§ã¨ãªããªãã¾ã¾æ®ããã¦ãã¾ãããããã¤ãã®ãã©ã¦ã¶ã¼ã§ã¯ããããã¯ãå®è¡ããã¦ããããªãã¦ããzero
ãå®ç¾©ããã§ãããã
strict ã¢ã¼ãã§ã¯ãES2015 ã«å¯¾å¿ãããã©ã¦ã¶ã¼ã¯ãã¹ã¦ããããåãããã«æ±ãã¾ãã zero
㯠shouldDefineZero
ã true ã®å ´åã®ã¿å®ç¾©ãããã㤠if
ãããã¯ã®ã¹ã³ã¼ãã«éããã¾ãã
æ¡ä»¶ä»ãã§é¢æ°ãå®ç¾©ããããå®å ¨ãªæ¹æ³ã¯ã夿°ã«é¢æ°å¼ãä»£å ¥ãããã¨ã§ãã
var zero;
if (shouldDefineZero) {
zero = function () {
console.log("This is zero.");
};
}
ä¾ æ´å½¢ãããæ°å¤ãè¿ã
次ã®é¢æ°ã¯ãæ°å¤ã®å é ã«ã¼ããè¶³ãã¦åºå®é·ã«ããå½¢ã§è¡¨ãããæååãè¿ãã¾ãã
// ãã®é¢æ°ã¯å
é ã«ã¼ããè¶³ãã¦åºå®é·ã«ããæååãè¿ã
function padZeros(num, totalLen) {
var numStr = num.toString(); // æ»ãå¤ãæååã«åæåãã
var numZeros = totalLen - numStr.length; // ã¼ãã®æ°ãè¨ç®ãã
for (var i = 1; i <= numZeros; i++) {
numStr = "0" + numStr;
}
return numStr;
}
æ¬¡ã®æã§ padZeros 颿°ãå¼ã³åºãã¾ãã
var result;
result = padZeros(42, 4); // "0042" ãè¿ã
result = padZeros(42, 2); // "42" ãè¿ã
result = padZeros(5, 4); // "0005" ãè¿ã
颿°ãåå¨ãããã©ãã確èªãã
typeof
æ¼ç®åã使ãã¨é¢æ°ãåå¨ãããã©ããã確ããããã¨ãã§ãã¾ããæ¬¡ã®ä¾ã§ã¯ãwindow
ãªãã¸ã§ã¯ãã noFunc
ã¨ãã颿°ã®ããããã£ãæã¤ãã©ããã確ãããããã®ãã¹ããè¡ããã¾ããããæã£ã¦ããããããã使ããã¾ããããã§ãªããã°ãä»ã®è¡åãåããã¾ãã
if ("function" === typeof window.noFunc) {
// noFunc() ã使ã
} else {
// ä½ãä»ã®ãã¨ããã
}
if
ã®ãã¹ãã®ä¸ã§ãnoFunc
ã¸ã®åç
§ã使ããã¦ããã®ã«æ³¨ç®ãã¦ãã ããã颿°åã®å¾ã«æ¬å¼§ "()" ããªãã®ã§ãå®éã®é¢æ°ã¯å¼ã³åºããã¾ããã
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