JavaScript ã®å¤æ°ã¯ãã¹ã¦é¢æ°ãªãã¸ã§ã¯ãã®éå§æã«çæããã
function f() { // ãã®æç¹ã§å¤æ° a ã¯çæããã¦ãã a = 1; var a; alert(a); // 1 };
ãã¨ããé¢æ°ä¸ã«ãããã¯ããããã¨ã
function f() { // ãã®æç¹ã§å¤æ° a ã¯çæããã¦ãã { a = 1 } { var a } alert(a); // 1 }
ãã¨ããwith ã¹ã³ã¼ãããããã¨ã
function f() { // ãã®æç¹ã§å¤æ° a ã¯çæããã¦ãã a = 1; var b = {}; with(b) { var a; // ãã® var ã¯ç´è¿ã® with ã¹ã³ã¼ãã§ã¯ãªãã // é¢æ°ã¹ã³ã¼ãã«å¯¾ãã var ã¨ãªã a = 2; } alert(a); // 2 }
with ã¹ã³ã¼ãã§ã¯ãå¤æ°ãåçã«è¿½å ãããã¨ãã§ãã
function f() { // ãã®æç¹ã§å¤æ° a ã¯çæããã¦ãã var a; var scope = {}; with(scope) { a = 1; // é¢æ°ã¹ã³ã¼ãã® a scope.a = undefined; a = 2; // with ã¹ã³ã¼ãã® a alert(a); // 2 } alert(a); // 1 }
é¢æ°ã¹ã³ã¼ãã«ãåçã«å¤æ°ãçæãããã¨ã¯ã§ããªãã®ã
ä»ã¾ã§ã¯ãåã以ä¸ã®çç±ã§åºæ¥ãªãã¨æã£ã¦ããã
- å¤æ°ã¯é¢æ°ã®ä¸çªæåã«çæãããã
- é¢æ°ã¹ã³ã¼ãã«é¢æ°ãçæããæ¹æ³ã¯ var 宣è¨ãããªãã
ããããæ¹æ³ããã£ãã
eval ã使ãã¨ã§ããã¿ãã
var a; function f() { a = 1; eval('var a'); a = 2; alert(a); // 2 alert(window.a); // 1 }
ããããããããï¼ã§ããï¼
ããã使ãã¨
以ä¸ã®ããã«ãã°ãã¼ãã«å¤æ°ã使ããªãé¢æ°ãä½ã£ããã§ãã¾ãã
var sandbox = (function() { var a = []; for (var n in window) a.push(n); eval('var ' + a.join(',')); return function() { alert(); // Error: alert is not a function; }; })();
å½¹ã«ç«ã¤ãã¨è¨ãããã°çåã§ããw