快速入门
基本语法
语法
Point | Example |
---|---|
; | var x=1; |
'' | 'Hello world!' |
"" | "Hello world!" |
// | //这是注释 |
alert | alert('Hi') |
数据类型和变量
Number
字符串
'' ''''
布尔值
&&
||
!
比较运算符
== ===
isNaN()
null和undefined
数组
[1,2,3,'a']
new array(1,2,3)
对象
变量
strict模式
'use strict';
字符串
多行字符串
``
模板字符串
需要使用``
${}
操作字符串
var s='Hello world!';
s.length;
s[0];
字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果
s.toUpperCase();
s.toLowerCase();
s.indexOf('world');
s.substring(0,5);//from 0 to 5(not included)
数组
var arr=[1,2,3.14,'Hello',null,true];
arr.length;
请注意,直接给Array的length赋一个新的值会导致Array大小的变化
Array可以通过索引把对应的元素修改为新的值,因此,对Array的索引进行赋值会直接修改这个Array
请注意,如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化
indexOf
arr.indexOf(2);
arr.indexOf('Hello');
slice
对应String中的substring()版本
arr.slice(0,3);
push&pop
arr.push('l');
arr.pop();
unshift&shift
arr.unshift('l');
arr.shift();
sort
arr.sort();
reverse
arr.reverse();
splice
splice()方法是修改Array的万能方法,它可以从指定索引开始删除若干元素,然后再从该位置添加若干元素
arr.splice(2,3,'a','g');
arr.splice(2,3);
arr.splice(2,0,'a','g');
concat
concat()方法把当前的Array和另一个Array连接起来,并返回一个新的Array
请注意,concat()方法并没有修改当前Array,而是返回了一个新的Array
实际上,concat()方法可以接收任意个元素和Array,并且自动把Array拆开,然后全部添加到新的Array里
var added=arr.concat([1,2,3]);
var newadded=arr.concat(1,2,[3,4]);
join
join()方法是一个非常实用的方法,它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串
var arr=[1,2,3];
arr.join('-');//'1-2-3'
多维数组
var arr=[[1,2,3],[1,2],3];
上述Array包含3个元素,其中头两个元素本身也是Array
对象
JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成。
var xiaoming={
name:'xiaoming'
};
xiaoming.name;
xiaoming.age=18;
delete xiaoming.age;
delete xiaoming['name'];
xiaoming.name='xiaoming';
如果我们要检测xiaoming是否拥有某一属性,可以用in操作符
'name' in xiaoming;
'age' in xiaoming;
判断一个属性是否是xiaoming自身拥有的,而不是继承得到的,可以用hasOwnProperty()方法
xiaoming.hasOwnProperty('name');
xiaoming.hasOwnProperty('age');
条件判断
if ... else ...
if else
循环
for循环
var i;
for (i=1;i<10000;i++)
{
...
}
for ... in ...
var o={
name:'Jack',
age:20,
city:'Beijing'
};
for (var key in o) {
...
}
请注意,for ... in对Array的循环得到的是String而不是Number。
while
do ... while
Map&Set
Map
var m=new Map([['Michael',95],['Bob',75],['Tracy',85]]);
Map方法 | Example |
---|---|
set | m.set('Adam',67); |
has | m.has('Adam'); |
get | m.get('Adam'); |
delete | m.delete('Adam'); |
Set
var s=new Set([1,2,3]);
s.add(4);
s.delete(4);
iterable
for ... of ...
你可能会有疑问,for ... of循环和for ... in循环有何区别?
for ... in循环由于历史遗留问题,它遍历的实际上是对象的属性名称
一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性
当我们手动给Array对象添加了额外的属性后,for ... in循环将带来意想不到的意外效果
for ... in循环将把name包括在内,但Array的length属性却不包括在内。
for ... of循环则完全修复了这些问题,它只循环集合本身的元素
这就是为什么要引入新的for ... of循环
然而,更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数
Set:
s.forEach(function (element,sameElement,set) {
console.log(element);
});
Map:
m.forEach(function (value,key,map) {
console.log(value);
});
Array:
a.forEach(function (element) {
console.log(element);
});
From liaoxuefeng