問題
第1問
function f1(){
var x = 1;
console.log("a:" + x)
{ var x = 2; }
console.log("b:" + x)
}
f1(); //=> a:1
// b:?
第2問
function f2(){
let x = 1;
console.log("a:" + x)
{ let x = 2; }
console.log("b:" + x)
}
f2(); //=> a:1
// b:?
答え
第1問
function f1(){
var x = 1;
console.log("a:" + x)
{ var x = 2; }
console.log("b:" + x)
}
f1(); //=> a:1
// b:2
第2問
function f2(){
let x = 1;
console.log("a:" + x)
{ let x = 2; }
console.log("b:" + x)
}
f2(); //=> a:1
// b:1
ECMAScript第5版にブロックスコープはないが、
javascriptの独自拡張にブロックスコープを使えるletがある。