JavaScript基础1-数据结构

想来,很多年前就写过JavaScript,工作后也一直断断续续在使用,但主要是后台写个管理页面,停在JQuery和AJax几个关键词上,选个UI框架,CSS也不用管啦,反正能用就行。这几年前端技术更新比后端还快,是时候重新整理下前端知识了。

对于写前端不多的后端,光学习怎么用一个新框架/工具好像没什么用,过几天就忘了,再学也容易。反而理解一些核心概念会比较重要,也能跟得上变化。学习的目的有俩个,一是后端管理系统,二是希望对前后端架构有一个整体一直的认识。

后面大概有3篇简单学习下JavaScript基础。

语法

使用{...},但不要求;,注释和java一样。

数据类型

下面不做详解,只记录跟其他解释性解释性不太一样的地方。

Number
* NaN:Not a Number,
* Infinity:无限大,超出number最大值。

字符串
1. 单引号和双引号都行。
2. 多行字符串用反引号,连接用+, 字符串中可以像shell一样使用变量${var}
3. 常用方法:length,toUpperCase,indexOf,substring

布尔值
true,false

null和undefined
null: 表示一个“空”的值,不是java的Nul,也不是nil。
undefined: 未定义

数组

var arr = [1, 2, 3.14, 'Hello', null, true];
new Array(1, 2, 3); 

操作和其他语言没差,但切片不如python方便(arr[:7]),使用函数slice。unshift和shift可在头部加入或者删除若干元素。

对象

var obj = {
    key: 'value'
};

访问属性使用.,如果属性有特殊符号,需用单引号,访问时像数组一样访问。作为动态语言,可以自由地添加删除属性。检查对象是否有某属性使用in,属性可能是继承的,可以使用方法判断(hasOwnProperty)。

Map和Set
Map和Set是ES6标准新增的数据类型,Map就是key-value,但支持非字符串作为key。set就是一个不能重复的key集合。

变量

和其他动态类型语言一样,不需要类型声明,使用类型推断。

var i = 1

如果不使用var,则表示全局变量,由于全局变量会引起很多问题,可以在文档开始启用strict,表示强制使用var,否则报错。

'use strict';

分支和循环

if else 和 for 循环就不细说,都一样。

var age = 15;
if (age >= 18 ) {
    console.log('adult');
} else if (age > 6) {
    console.log('teenager');
} else {
    console.log('kid');
}

JavaScript循环支持for,for…in,while,do … while。

S6引入的新的语法:for… of,和for…in的区别是,后者迭代出的是key或者是数组下标。

var a = [1, 2, 3,'hello'];
for (var x of a) {
	console.log(x)	
}

遍历最好的还是forEach:

var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {
    console.log(array,index,element);
});

简单浏览一遍基本语法,具有动态语言的优缺点,但有的设计还是比较乱和多余。随着新标准的不断更新,也不断加入新时代语言特性。不管怎么说,挡不住JavaScript雄霸天下。

CONTENTS