发表于: 2016-10-28 00:35:56
1 663
今天完成的事情
1.完成任务四
2.做完任务后,回头在看一些基础至少点,有一些知识 开始没看懂,现在恍然大悟
http://119.10.57.69:880/jnshu070/js1/homework2/JS2-1.html
明天完成的事情:
1.看一下上午要不要 梳理一下任务四的知识点 或者直接开始任务五
遇到的问题
1.
for ... in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。
当我们手动给Array对象添加了额外的属性后,for ... in循环将带来意想不到的意外效果:
var a = ['A', 'B', 'C'];
a.name = 'Hello';for (var x in a) {
alert(x); // '0', '1', '2', 'name'
}
---------------------------------
for ... of循环则完全修复了这些问题,它只循环集合本身的元素:
var a = ['A', 'B', 'C'];
a.name = 'Hello';for (var x of a) {
alert(x); // 'A', 'B', 'C'
--------------------------------
可是为什么我使用 of不可以呢? console提示的事NaN ,后来还是用的in
2.
JavaScript本身对嵌套的层级没有限制,但是过多的嵌套无疑会大大增加看懂代码的难度。遇到这种情况,需要把部分代码抽出来,作为函数来调用,这样可以减少代码的复杂度。
3.
需要特别注意的是,字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果:
var s = 'Test';
s[0] = 'X';
alert(s); // s仍然为'Test'
4.
var xiaohong = {
name: '小红',
'middle-school': 'No.1 Middle School'
};
xiaohong的属性名middle-school不是一个有效的变量,就需要用''括起来。访问这个属性也无法使用.操作符,必须用['xxx']来访问:
xiaohong['middle-school']; // 'No.1 Middle School'
xiaohong['name']; // '小红'
xiaohong.name; // '小红'
5.
for循环的3个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break语句退出循环,否则就是死循环:
var x = 0;for (;;) { // 将无限循环下去
if (x > 100) {
break; // 通过if判断来退出循环
}
x ++;
}
6.
如果if的条件判断语句结果不是true或false怎么办?例如:
var s = '123';if (s.length) { // 条件计算结果为3
//
}
JavaScript把null、undefined、0、NaN和空字符串''视为false,其他值一概视为true,因此上述代码条件判断的结果是true。
7.
var a = ['A', 'B', 'C'];for (var i in a) {
alert(i); // '0', '1', '2'
alert(a[i]); // 'A', 'B', 'C'
}
请注意,for ... in对Array的循环得到的是String而不是Number。
评论