美文网首页
廖雪峰JS学习总结-入门篇

廖雪峰JS学习总结-入门篇

作者: hlemon | 来源:发表于2017-03-08 09:30 被阅读155次

    最近在刷廖雪峰的JS教程,把里面的自己不太清楚的东西在刷一遍。
    教程网址:http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000

    数据类型:
    • 简单类型:StringNumberBooleanNullUndefined
    • 复杂类型:Object
    • ES6新增类型:Symbol(感谢TimeTraveler指出)
    数组:
    • 修改Array中索引不会有任何错误,不建议修改Array大小,并且确保索引不会越界。
    对象:
    • 对象的属性名如果不是一个有效的变量,例如middle-school,就需要用''括起来。访问这个属性也无法使用.操作符,必须用['xxx']来访问。(可以利用这个方式获取部分自动生成属性值)
    • 可以利用in判断一个对象的属性是否存在,当是需要注意,它可能是对象继承得到的,例如:
    var xiaoming = {
        name: '小明',
        birth: 1990,
        school: 'No.1 Middle School',
        height: 1.70,
        weight: 65,
        score: null
    };
    'name' in xiaoming; // true
    'grade' in xiaoming; // false
    'toString' in xiaoming; // true(由object继承而来)
    
    • 可以用hasOwnProperty()方法来判断一个属性是否为对象自身拥有的属性,例如:
    var xiaoming = {
        name: '小明'
    };
    xiaoming.hasOwnProperty('name'); // true
    xiaoming.hasOwnProperty('toString'); // false
    
    条件判断:
    • if...else...语句的执行特点是二选一,在多个if...else...语句中,如果某个条件成立,则后续就不再继续判断了。
    • JavaScript把nullundefined0NaN和空字符串''视为false,其他值一概视为true
    循环:
    • for循环的一个变体是for ... in循环,它可以把一个对象的所有属性依次循环出来,需要注意的是,循环会把继承的属性加上,如果要过滤掉对象继承的属性,用hasOwnProperty()来实现:
    var o = {
        name: 'Jack',
        age: 20,
        city: 'Beijing'
    };
    for (var key in o) {
        if (o.hasOwnProperty(key)) {
            alert(key); // 'name', 'age', 'city'
        }
    }
    
    iterable:
    • 为了统一集合类型,ES6标准引入了新的iterable类型,ArrayMapSet都属于iterable类型。
    • 具有iterable类型的集合可以通过新的for ... of循环来遍历。(只会循环集合本身)
    • 更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。
    Array下输出的为(element, index, array);
    Map下输出的为(value, key, map);
    Set下输出的为(element, sameElement, set); // Set没有索引,因此回调函数的前两个参数都是元素本身
    

    相关文章

      网友评论

          本文标题:廖雪峰JS学习总结-入门篇

          本文链接:https://www.haomeiwen.com/subject/shtbgttx.html