JavaScript

快速入门

基本语法

语法

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

你可能感兴趣的:(JavaScript)