基础
1、变量声明
- 与 Java 和 C 不同,ECMAScript 中的变量无特定的类型,定义变量时只用 var 运算符,可以将它初始化为任意值
另外也不止var一种声明方式,还有let和const.
区别:
var:全局变量。
let:块级作用域内有效。
const:常量,不可重新赋值,否则报错。
- 既然变量无类型,那么就规范一下变量命名
匈牙利类型标记法:
var iMyTestValue = 0, sMySecondValue = "hi";
类型 | 前缀 | 示例 |
---|---|---|
数组 | a | aValues |
布尔型 | b | bFound |
浮点型(数字) | f | fValue |
函数 | fn | fnMethod |
整型(数字) | i | iValue |
对象 | o | oType |
正则表达式 | re | rePattern |
字符串 | s | sValue |
变型(可以是任何类型) | v | vValue |
- 变量可以不声明,直接用。
2、函数是 ECMAScript 的核心。
函数是由这样的方式进行声明的:关键字 function、函数名、一组参数,以及置于括号中的待执行代码。
- arguments对象
function sayHi() {
if (arguments[0]
== "bye") {
return;
}
alert(arguments[0]);
}
因此,无需明确命名参数,就可以重写函数。
function howManyArgs() { alert(arguments.length); } howManyArgs("string", 45); howManyArgs(); howManyArgs(12);上面这段代码将依次显示 "2"、"0" 和 "1"。
Function对象
var function_name = new function(arg1, arg2, ..., argN, function_body)
之前的函数声明(如下),
function sayHi(sName, sMessage) { alert("Hello " + sName + sMessage); }
现在,可以这样定义它:
var sayHi = new Function("sName", "sMessage", "alert(\"Hello \" + sName + sMessage);");
- 闭包
函数使用函数之外的变量,就叫闭包。
var iBaseNum = 10; function addNum(iNum1, iNum2) { function doAdd() { return iNum1 + iNum2 + iBaseNum; } return doAdd(); }
特性
1、Moudule
声明
//datelib.js
export const today = new Date();
export var shortDate = function() {
return today.getMonth() + 1 + '/' +
today.getDate() + '/' +
today.getFullYear();
}
使用
import {today, shortDate} from './datelib'
console.log(today);
console.log(shortDate);
或者,
import * as date from './datelib'
console.log(date.today);
console.log(date.shortDate);
2、Class
构造方法constructor
getter和setter方法用get和set标记,使用时当属性用,而不用当方法用(区别在于是否需要加括号)。
属性和方法可声明static
class实例化用new,
class可以extends, 同时也支持super.
3、Map
var map = new Map();
map.set("key", "value");
map.get("key");
map.has("key");
map.delete("key");
key可以是任意值。
4、Set
有序列表,值需要唯一。
var colors = new Set();
colors.add("red");
colors.add("blue");
colors.size;
colors.has("red");
colors.delete("red");