发表于: 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的条件判断语句结果不是truefalse怎么办?例如:

var s = '123';if (s.length) { // 条件计算结果为3

    //

}

JavaScript把nullundefined0NaN和空字符串''视为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 ... inArray的循环得到的是String而不是Number



返回列表 返回列表
评论

    分享到