在看看js相关资料时,改写了一个相关的代码,可是在运行的结果上却纠结了
var human = {};
for(human.age=1;human.age<4;human.age++) {
switch(human.age) {
case 1:
human.like = '小屁孩';
human.say = function () {alert(this.age+','+this.like)};
break;
case 5:
human.like = '小毛孩';
human.say = function () {alert(this.age+','+this.like)};
break;
case 6:
human.like = '小孩';
human.say = function () {alert(this.age+','+this.like)};
break;
}
human.say();
alert(human.age); //调试
}
我的理解为,上述的代码,只会显示一次,也就是弹出 小屁孩,1。可结果却是弹出三次,并且后面的数字依次增加,我就不明白了,难道我的switch语句理解有误,不是switch里的值为多少,就执行里面相关的case对应的值,可human.age在第一次运行后已经不是1了,为什么还是可以执行case 1相关的内容呢???
var human = {};
for(human.age=1;human.age<4;human.age++) {
switch(human.age) {
case 1:
human.like = '小屁孩';
human.say = function () {alert(this.age+','+this.like)};
break;
case 5:
human.like = '小毛孩';
human.say = function () {alert(this.age+','+this.like)};
break;
case 6:
human.like = '小孩';
human.say = function () {alert(this.age+','+this.like)};
break;
}
human.say();
alert(human.age); //调试
}
我的理解为,上述的代码,只会显示一次,也就是弹出 小屁孩,1。可结果却是弹出三次,并且后面的数字依次增加,我就不明白了,难道我的switch语句理解有误,不是switch里的值为多少,就执行里面相关的case对应的值,可human.age在第一次运行后已经不是1了,为什么还是可以执行case 1相关的内容呢???
解决方案 »
- 求菜单收缩“中间”效果实现思路
- 关于extjs的单击选中一行,将整行的数据传到另一个页面修改???
- showModalDialog如果关闭子窗口后自动刷新父窗口?怎么实现?
- 使用 currentstyle 获得对象的高度,为什么vml对象返回的是长度单位是pt,而别的对象(如div)返回的是px。
- JS在IE下有效在FF下无效
- 请教:onsubmit在IE下不能触发问题
- 2天完成 多人在线 即时互动 RPG游戏!
- WhiteRiver请进,想请教
- 弹出窗口老继承父窗口的属性该怎么办啊
- 在线等待!!!急!!!!!
- jquery怎么实现图片加载但不显示
- Ext 生成带有checkbox的tree选中问题
human.age=1时 已经注册了human.say();虽然后面human.age=2,3时不符合条件,但同样执行前面注册的human.say();所以三次都是 '小屁孩'
执行human.like = '小屁孩';
human.say = function () {alert(this.age+','+this.like)};这两句
也就是给human对象赋值
接下来执行human.say();
alert(human.age);这两句
输出"小屁孩"和"1"
然后执行human.age++这句
这时human.age = 2
不满足switch语句条件,再执行后面的
human.say();
alert(human.age);
输出"小屁孩"和"2"
同理,输出"小屁孩"和"3"
for(human.age=1;human.age<4;human.age++) {
switch(human.age) {
case 1:
human.like = '小屁孩';
alert(human.age+','+human.like);
break;
case 5:
human.like = '小毛孩';
alert(human.age+','+human.like);
break;
case 6:
human.like = '小孩';
alert(human.age+','+human.like);
break;
}
}这才是你希望的