1、以下代码执行的结果是()
for(var i=0;i<5;++i){
setTimeout(function(){
console.log(i+' ');
},100);
}
错误答案:0 1 2 3 4
正确答案:5 5 5 5 5
解析:setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。 所以匿名函数根本就没有立即执行(不是每次循环都打印了),而是在100毫秒后执行(依然按循环执行),匿名函数开始访问外部函数的变量时,变量的值早已成为最后一个即5(++i,先在最后一个数4的基础上+1,再执行下一次判断)
2、表达式”2”+3+4的值为?
错误答案:”27”
正确答案:“234”
解析:因为都是+,从“2”开始加的时候,先处理"2"+3,再处理"23"+4,结果"234" ;
如果是 "2"+3/4 ,结果就不一样了,先执行3/4 再和“2”加,结果是20;
如果是Number("2")+3+4,结果就是9