创建: 2017/09/16
更新: 2017/09/24 更改标题 【JavaScript 概要】-》 【JavaScript 基础】
完成: 2017/09/25
更新: 2017/10/09 补充函数声明也会上卷
更新: 2018/01/22 加红函数也会上卷
补充内置Obejct等,完善欠缺的内容, 把标题列加粗,字体放大
改变文档结构, 标题单起一行
修改标题 【JavaScript 基础】 -> 【JavaScript 基础 (变量声明, 数据类型, 控制语句)】
更新: 2019/02/26 补充for/in相关
纠正插值方法 `${}`
待完成事项: TODO
注释 |
|
所有文末加;
|
变量声明 |
var |
注:无论声明在哪里,都最先执行
重复声明的话只看第一个(因为全部最先执行,所以没有影响)
|
let |
类似c语言中的变量
和var的区别
如果有代码块,则作用域为代码块内部(对纯代码块也有效) |
{let a = "测试";}
print(a); //会报错 |
变量声明按行执行,不是最开始执行 |
print(a);
var a = 21; |
不能重复声明 |
let a;
let a; //会报错 |
不上卷(不会预先全部声明,遇到代码处才声明) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const |
let的常数版
值型 |
不能变更 |
参照型 |
不能变更object,但是可以变更object的属性(property) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
数据类型 |
值型 |
数值
没有整数浮点数的区别们,都是64位浮点数(double)
数组的索引已经比特运算作为long int(32位)
符号的记法
分类 |
写法 |
说明 |
整数 |
10进制
123 |
正常写 |
16进制 ES6
0x2a |
0x开头 |
8进制 ES6
0o12 |
0o开头 |
2进制
0b110 |
0b开头 |
|
|
|
|
浮动小数点数 |
整数.小数 |
3.14 |
.小数
.123 |
整数部分为0可省略
相当于0.123 |
科学计数法
6.02e21
1.123E-12 |
e和E没有区别 |
|
|
|
|
|
|
特殊值
分类 |
记法 |
说明 |
全局变量 |
Infinity |
无穷大 |
NaN |
Not a Number
不定值 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Number的属性 |
Number.POSITIVE_INFINITY |
正无穷 |
Number.NEGATIVE_INFINITY |
负无穷 |
Number.MAX_VALUE |
能用的最大值 |
Number.MIN_VALUE |
能用的最小值 |
Nunmber.NaN |
不定值 |
Number.EPSILON
ES6 |
一个特定量 |
Number.MIN_SAFE_INTEGER
ES6 |
-9007199254740991e-16 |
Number.MAX_SAFE_INTEGER
ES6 |
9007199254740991 |
|
|
|
|
|
字符串
"..."或者'...'包围
插值
转义符号
\0 |
空字符 |
\b |
back space(退格) |
\t |
tab |
\n |
换行 |
\v |
垂直tab |
\f |
换页
? |
\r |
回到行开始 |
\' |
|
\" |
|
\\ |
|
\xXX |
2位的16进制数,表示拉丁文字 |
\uXXXX |
4位16进制数表示Unicode文字 |
\u{XXXXXX} |
16进制的编码表示Unicode文字 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
布尔值
true,false
|
特殊值
undefined, null
注意: undefined不能用来代入
symbol |
和其他的都不一样的值,相当于哈希值 |
生成 |
|
var sym = Symbol()
注意: 每次呼出Sybmol()得到的值都不一样 |
带参数 |
var sym =
Symbol("test")
参数作为符号的描述 |
呼出描述 |
用toString()
例: sym.toString() |
以字符串为种子生成符号 |
var sym = Symbol.for("...")
注: 同一字符串的符号完全相同 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
符号
TODO p39
占位符 ${...}
|
模板
TODO p41 第八章
|
|
|
|
|
对象(object)
|
类似于Swift的词典,c的哈希表与值的组合 |
参照型,共有一个 |
|
|
|
|
|
|
|
|
控制语句 |
条件句 |
if/else |
if () {
...
}else if (...) {
...
}else {
...
}
|
switch |
switch(...) {
case 1:
...;
break;
case 2:
...;
break;
case 3:
...;
break;
default:
...;
}
|
try/catch/finally |
|
|
循环句 |
while |
|
do/while |
do {
...
...
} while(...)
|
for |
// 注: 三个条件可以随意省略
for(...; ...; ...) {
...
...
}
|
for/in |
注: 获取的是属性名的字符串(获取属性用obj["name"])
Object.prototype等内部的实例属性/方法的enumerable都是false
for(var i in sample) { // 可以用已有的变量代替var i
...
}
· 有些库对Object.prototype添加方法时enumerable没设为false, 避免误操作的方法
for (var p in obj) {
if (!obj.hasOwnProperty(p)) { continue; }
...
}
// 或者
for (var p in obj) {
if (typeof(p) === "function") { continue; }
...
}
|
for/of |
TODO: 8 |
|
跳跃句 |
标签 |
标签名: statement 只有break和continue能用到标签
|
break |
只有switch和循环文可用 break; 跳出当前循环 带标签用法: break 标签名; |
continue |
只有循环能用 continue; continue 标签名; |
return |
返回后面带的参数,并结束函数 |
|
|
|