想来,很多年前就写过JavaScript,工作后也一直断断续续在使用,但主要是后台写个管理页面,停在JQuery和AJax几个关键词上,选个UI框架,CSS也不用管啦,反正能用就行。这几年前端技术更新比后端还快,是时候重新整理下前端知识了。
对于写前端不多的后端,光学习怎么用一个新框架/工具好像没什么用,过几天就忘了,再学也容易。反而理解一些核心概念会比较重要,也能跟得上变化。学习的目的有俩个,一是后端管理系统,二是希望对前后端架构有一个整体一直的认识。
后面大概有3篇简单学习下JavaScript基础。
语法
使用{...}
,但不要求;
,注释和java一样。
数据类型
下面不做详解,只记录跟其他解释性解释性不太一样的地方。
Number
- NaN:Not a Number,
- Infinity:无限大,超出number最大值。
字符串
- 单引号和双引号都行。
- 多行字符串用反引号,连接用
+
, 字符串中可以像shell一样使用变量${var}
。 - 常用方法: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雄霸天下。