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

最近在刷廖雪峰的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学习总结-入门篇)