js每日一题
<script>
(function() {
try {
throw new Error();
} catch (x) {
var x = 1,
y = 2;
console.log(x);
}
console.log(x);
console.log(y);
})();
</script>
答案:
1
undefined
2
解析:var语句被挂起(没有它们的值初始化)到它所属的全局或者函数作用域的顶部,即使它位于with或者catch块内,但是,错误的标识符值在catch块内部可见。
它相当于:
(function(){
var x , y;
try{
throw new Error();
}catch(x){
x = 1;
y = 2;
console.log(x);//该处的x,并不是 x = 1处的x,所以根据预编译可知,该处的答案为undefined
}
console.log(x);
console.log(y);
})();
每天进步一点点!!!!