function test(o){
var i = 0; //i在整个函数体内均有定义
if(typeof o == "object"){
var j = 0; //j在整个函数体内是有定义的,不仅仅是这个代码段内
for(var k = 0;k<10;k++){
console.log(k); //k在函数体内是有定义的,不仅仅实在循环内
}
console.log(k); //输出0~9
}
console.log(j); //j已经定义了,但可能没有初始化
}
上面的代码中倒数第二行的j输出是0;书中的解释说j已经定义,但可能没有初始化,为什么是可能?
像这种问题,不用纠结。实际写个测试代码运行一下就OK了。因为书中的内容有一些事错误的。有如下原因:
(1)写书的水平不够。
(2)当时这些代码测试了没有?
(3)代码运行的环境如何?
(4)语言的版本是多少?
总之有很多的原因。我的测试如下。
图1
图2
图3
图4
只有实际运行的代码才是真实的,其他的都是浮云。
不会插入代码?