对于变量名,键值对中的键名应知足以下要求:正则表达式
_
)或美圆符号($
)这里,关键字就是在 js 中有特殊意义的单词,而保留字是为了之后使用预留的词语。但不要求背它们,随着学习的深刻,天然就都记住了。数组
常见的关键字有:浏览器
break、delete、function、return、typeof、case、do、if、switch、var、catch、else、in、this、void、continue、false、instanceof、throw、while、debugger、finally、new、true、const、with、let、default、for、null、try、async 等等async
常见的保留字有:函数
class、enum、export、extends、import 、super等等学习
本文可能会直接用到的有:this
Javascript 基本类型包括:数值,字符串,null,undefined 和布尔型。还有 ES6 中的 Symbol 类型,这篇博客暂时先不提 Symbol 类型。spa
好比:debug
var num = 1; //数值型 var str = 'hello world'; //字符串,双引号也能够 var flag = true; //布尔型,取值 true 或 false var obj = null; //空类型 var it = undefined; //undefined
这里简单解释一下须要注意问题:code
js 中其实除了基本类型之外其余类型的本质都是对象,就算是基本类型变量,除了 undefined 和 null 之外,都有其对应的对象类型。以下:
var num = new Number(2); var str = new String('hello'); var flag = new Boolean(true);
这里必定要清楚,其对象类型和基本类型不是一个东西,具体的看完类型转换就一切都清楚了。
固然,下面继续说对象,js 经常使用的对象有:Array,Object,Date,RegExp等等。定义方法以下:
var arr = new Array(); //获得一个空数组 var arr2 = new Array(5); //获得一个长度为5的数组,初值为undefined var arr3 = new Array('b','a','c'); //获得一个长为3,对应值为'b','a','c' 的数组 var obj = new Object(); //获得一个空对象 var now = new Date(); //获得当前时间 var reg = RegExp('^[A-Za-z][\w\d]*$'); //获得一个正则表达式
对于数组、正则表达式和对象还有一种字面量的定义方法,这个方法和上面是彻底等价的:
var arr = []; //获得一个空数组 var arr3 = ['b','a','c']; //获得一个长为3,对应值为'b','a','c' 的数组 var obj = {}; //获得一个空对象 var reg = /^[A-Za-z][\w\d]*$/; //获得一个正则表达式
这个部分直接举例子:
var arr = [1, 2, 3, 'a']; //定义一个数组 arr[0]; //1 访问数组的第1个元素,注意索引从0开始 arr[1]; //2 访问数组的第2个元素 arr[3]; //'a' 访问数组的第4个元素 arr[-1], arr[4], arr[1.3]; //undefined 访问数组越界或索引不正确都返回 undefined
var obj = { name: 'Bob', age: 18, gender: 'M' }; obj.name; //'Bob' 获取 obj 对象的姓名 obj.age; //18 获取 obj 对象的年龄 obj.gender; //'M' 获取 obj 对象的性别
注意当键名中有符号也须要加引号。
其他的对象会在之后用到的时候再仔细讲
运算符就像咱们数学中的加减乘除,也像数学中的计算规定的前后顺序,这里我直接给出因此运算符的运算顺序和实例,必要的解释在表格后面,没有解释到的属于比较深奥的运算符,记住它的顺序便可,功能后续再理解。
优先级 | 运算符 | 结合性 | 举例 | 说明 |
20 | 圆括号 | n/a | ( … ) | - |
19 | 成员访问 | 从左到右 | obj.name | - |
需计算的成员访问 | 从左到右 | obj["name"] | - | |
new (带参数列表) | n/a | new Person() | - | |
18 | 函数调用 | 从左到右 | fun(args) | - |
new (无参数列表) | 从右到左 | new fun | - | |
17 | 后置递增 | n/a | a++ | 至关于 a = a + 1; |
后置递减 | n/a | a-- | 至关于 a = a - 1; | |
16 | 逻辑非 | 从右到左 | !a | - |
按位非 | 从右到左 | ~a | - | |
一元加法 | 从右到左 | +a | - | |
一元减法 | 从右到左 | -a | - | |
前置递增 | 从右到左 | ++a | - | |
前置递减 | 从右到左 | --a | - | |
typeof | 从右到左 | typeof 4 | 获得值的类型 'number' | |
void | 从右到左 | void(0) | 执行表达式并返回 undefined | |
delete | 从右到左 | delete obj.age | 删除对象属性 | |
15 | 幂 | 从右到左 | 2**4 | 得16 |
14 | 乘法 | 从左到右 | 2 * 3 | 得 6 |
除法 | 从左到右 | 4 / 2 | 得 2 | |
取模 | 从左到右 | 4 % 3 | 得 1 | |
13 | 加法 | 从左到右 | 1 + 3 | 得 4 |
减法 | 从左到右 | 2 - 3 | 得 -1 | |
12 | 按位左移 | 从左到右 | 32 << 5 | 得 1024 |
按位右移 | 从左到右 | 32 >> 3 | 得 8 | |
无符号右移 | 从左到右 | -32 >>> 2 | 得 1073741816 | |
11 | 小于 | 从左到右 | -1 < 2 | 得 true |
小于等于 | 从左到右 | -1 <= 2 | 得 true | |
大于等于 | 从左到右 | 1 >= 2 | 得 false | |
大于 | 从左到右 | 1 > 2 | 得 false | |
in | 从左到右 | "name" in obj | - | |
instanceof | 从左到右 | li instanceof HTMLElement | - | |
10 | 等号 | 从左到右 | 5 == '5' | 得 true |
非等号 | 从左到右 | 5 != '5' | 得 false | |
全等号 | 从左到右 | 5 === '5' | 得 false | |
非全等号 | 从左到右 | 5 !== '5' | 得 true | |
9 | 按位与 | 从左到右 | 10 & 40 | 得 8 |
8 | 按位异或 | 从左到右 | 10 ^ 40 | 得 34 |
7 | 按位或 | 从左到右 | 10 | 40 | 得 42 |
6 | 逻辑与 | 从左到右 | 0 && 3 | 得 0,不得 false |
5 | 逻辑或 | 从左到右 | 0 || 3 | 得 3,不得 true |
4 | ?: | 从右到左 | 3 != 0 ? 1 : 2 | 得 1 |
3 | 赋值 | 从右到左 | a = 2 | - |
a += 2 | 至关于 a = a + 2 | |||
a -= 2 | 至关于 a = a - 2 | |||
a *= 2 | 至关于 a = a * 2 | |||
a /= 2 | 至关于 a = a / 2 | |||
a &= 2 | 至关于 a = a & 2 | |||
a |= 2 | 至关于 a = a | 2 | |||
a ^= 2 | 至关于 a = a ^ 2 | |||
a %= 2 | 至关于 a = a % 2 | |||
a <<= 2 | 至关于 a = a << 2 | |||
a >>= 2 | 至关于 a = a >> 2 | |||
a >>>= 2 | 至关于 a = a >>> 2 | |||
2 | yield | 从右到左 | yield returnValue; | - |
yield* | 从右到左 | yield* returnValue; | - | |
1 | 展开运算符 | n/a | arr1.push(...arr2) | - |
0 | 逗号 | 从左到右 | a=1, b=2 | 返回最后一个表达式的值 2 |
须要说明的是:
exp ? val1 : val2;
若是 exp 的结果为 true,整个表达式得 val1, 不然得 val2;