JavaScript 基础
动态语言
String
ES6里多行字符串可以用反引号 `…`表示。
ES6 模板替换, console.log(hello ${name}, you are ${age} years old now!
);
Array
var array = [1, 44, ‘hello’, null, true];
array.length;
请注意,直接给Array
的length
赋一个新的值会导致Array
大小的变化.
如果通过索引赋值时,索引超过了范围,同样会引起Array
大小的变化.
对象
JavaScript用一个{…}表示一个对象,键值对以xxx: xxx形式申明,用,隔开。注意,最后一个键值对不需要在末尾加,,如果加了,有的浏览器(如低版本的IE)将报错。
属性名必须是一个有效的变量名。如果属性名包含特殊字符,就必须用''
括起来.xiaohong
的属性名middle-school
不是一个有效的变量,就需要用”括起来。访问这个属性也无法使用.操作符,必须用['xxx']
来访问
var xiaohong = {
name: '小红',
'middle-school': 'No.1 Middle School'
};
要检测xiaoming是否拥有某一属性,可以用in
操作符.
要判断一个属性是否是xiaoming
自身拥有的,而不是继承得到的,可以用hasOwnProperty()
方法.
条件判断
JavaScript
把null
、undefined
、0
、NaN
和空字符串''
视为false
,其他值一概视为true
。
循环
for
循环的一个变体是for ... in
循环,它可以把一个对象的所有属性依次循环出来;
由于Array
也是对象,而它的每个元素的索引被视为对象的属性,请注意,for ... in
对Array
的循环得到的是String
而不是Number
。
Map & Set
Map和Set是ES6标准新增的数据类型.
初始化Map
需要一个二维数组,或者直接初始化一个空Map
.
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95
创建一个Set
,需要提供一个Array
作为输入,或者直接创建一个空Set
.
var s1 = new Set(); // 空Set
var s2 = new Set([1, 2, 3]); // 含1, 2, 3
iterable
为了统一集合类型,ES6标准引入了新的iterable
类型,Array
、Map
和Set
都属于iterable
类型。
for ... in
与 for ... of
.
更好的方式是直接使用iterable
内置的forEach
方法,它接收一个函数,每次迭代就自动回调该函数.
'use strict';
var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
// element: 指向当前元素的值
// index: 指向当前索引
// array: 指向Array对象本身
console.log(element + ', index = ' + index);
});