欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-30 19:13:12
...

最近在刷廖雪峰的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没有索引,因此回调函数的前两个参数都是元素本身