# 一.语法
前言
主要由关键字、标识符、操作符组合成一条语句,在对应的环境中执行这些语句得到最终结果
# 1.关键字
# 1.1 重点关键字
var:声明变量function:声明函数this:当前的调用者return:停止并返回delete:删除属性if、else:创建条件语句for:循环语句for+in:遍历对象的可枚举属性for+of:遍历可迭代对象while:创建循环语句do、while:创建循环语句break:终止当前循环continue:循环中中终止当前语句的执行,并在下一次迭代中继续执行循环typeof:类型判断instanceof:实例判断switch、case:条件匹配try、catch、finally:异常处理debugger:断点调试
# 1.2 其他关键字
let:声明变量(块级作用域)const:声明常量class:声明类defaultexport:导出模块extends:继承import:导入new:实例化superthrow:引发用户定义的异常voidwithyield
# 1.3 保留字
abstractbooleanbytechardoublefinalfloatgotointlongnativeshortsynchronizedthrowstransientvolatile
# 2.标识符
- 变量、函数、属性、函数参数的名称
# 2.1 变量
JavaScript变量是用于存储数据的容器 , 通过变量名称 , 可以 获取/修改变量中的数据
变量的本质是存放数据的一块内存空间
变量由相关关键字来声明和定义其作用域,由赋值运算符赋值,此处只讲设计var声明的变量
# 2.1.1 命名
- 变量名称必须以
字母,下划线(_)或美元符号($)开头 - 变量名称只能包含字母数字字符(
A-z,0-9)和下划线(_) - 变量名称不能包含
空格 - 变量名称不能是
关键字或保留字
# 2.1.2 声明
声明变量,就是在内存中找一个存放数据的空间并标记名称
var a
// var a = 1
1
2
2
# 2.1.3 赋值
- 变量声明的同时被赋值
var a = 1
1
- 变量被声明后再赋值
var a
a = 1
1
2
2
赋值可以是多种数据类型
# 2.1.4 作用域
变量的作用域是程序在其中定义的区域,作用域确定变量的可访问性(可见性)
var声明的变量只有两个作用域:
- 全局作用域
- 函数作用域
# 2.2 函数
函数由相关关键字来声明和定义其作用域,由{}包裹要执行的代码
# 2.2.1 命名
- 函数一般以小写字母开头,采用驼峰写法
- 变量名称只能包含字母数字字符(
A-z,0-9)和下划线(_) - 变量名称不能包含
空格 - 变量名称不能是
关键字或保留字
# 2.2.2 声明
声明函数,就是在内存中找一个存放函数数据的空间并标记名称,数据空间存放函数参数和代码块中的语句
此处只讲关键字function 用于声明函数
function fn(a) {
console.log(a)
}
1
2
3
2
3
# 2.2.3 作用域
函数的作用域是程序在其中定义的区域,作用域确定函数的可访问性(可见性)
function声明的函数作用域在代码块{}内
# 2.4 属性
# 3.运算符
# 3.1 算术运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| + | 加法运算符 | x + y 表示计算 x 加 y 的和 |
| - | 减法运算符 | x - y 表示计算 x 减 y 的差 |
| * | 乘法运算符 | x * y 表示计算 x 乘 y 的积 |
| / | 除法运算符 | x / y 表示计算 x 除以 y 的商 |
| % | 取模(取余)运算符 | x % y 表示计算 x 除以 y 的余数 |
# 3.2 赋值运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| = | 最简单的赋值运算符,将运算符右侧的值赋值给运算符左侧的变量 | x = 10 表示将变量 x 赋值为 10 |
| += | 先进行加法运算,再将结果赋值给运算符左侧的变量 | x += y 等同于 x = x + y |
| -= | 先进行减法运算,再将结果赋值给运算符左侧的变量 | x -= y 等同于 x = x - y |
| *= | 先进行乘法运算,再将结果赋值给运算符左侧的变量 | x _= y 等同于 x = x _ y |
| /= | 先进行除法运算,再将结果赋值给运算符左侧的变量 | x /= y 等同于 x = x / y |
| %= | 先进行取模运算,再将结果赋值给运算符左侧的变量 | x %= y 等同于 x = x % y |
# 3.3 字符串运算符
- 运算符表示将运算符左右两侧的字符串拼接到一起;
- += 运算符表示先将字符串进行拼接,然后再将结果赋值给运算符左侧的变量。
# 3.4 自增、自减运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| ++x | 自增运算符 | 将 x 加 1,然后返回 x 的值 |
| x++ | 自增运算符 | 返回 x 的值,然后再将 x 加 1 |
| --x | 自减运算符 | 将 x 减 1,然后返回 x 的值 |
| x-- | 自减运算符 | 返回 x 的值,然后将 x 减 1 |
# 3.5 比较运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| == | 等于 | x == y 表示如果 x 等于 y,则为真 |
| === | 全等 | x === y 表示如果 x 等于 y,并且 x 和 y 的类型也相同,则为真 |
| != | 不相等 | x != y 表示如果 x 不等于 y,则为真 |
| !== | 不全等 | x !== y 表示如果 x 不等于 y,或者 x 和 y 的类型不同,则为真 |
| < | 小于 | x < y 表示如果 x 小于 y,则为真 |
| > | 大于 | x > y 表示如果 x 大于 y,则为真 |
| >= | 大于或等于 | x >= y 表示如果 x 大于或等于 y,则为真 |
| <= | 小于或等于 | x <= y 表示如果 x 小于或等于 y,则为真 |
# 3.6 逻辑运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| && | 逻辑与 | x && y 表示如果 x 和 y 都为真,则为真 |
| || | 逻辑或 | x || y 表示如果 x 或 y 有一个为真,则为真 |
| ! | 逻辑非 | !x 表示如果 x 不为真,则为真 |
# 3.7 三元运算符
条件表达式 ? 表达式1 : 表达式2 ;
# 3.8 位运算符
| 运算符 | 描述 | 示例 |
|---|---|---|
| & | 按位与:如果对应的二进制位都为 1,则该二进制位为 1 | 5 & 1 等同于 0101 & 0001 结果为 0001,十进制结果为 1 |
| | | 按位或:如果对应的二进制位有一个为 1,则该二进制位为 1 | 5 | 1 等同于 0101 | 0001 结果为 0101,十进制结果为 5 |
| ^ | 按位异或:如果对应的二进制位只有一个为 1,则该二进制位为 1 | 5 ^ 1 等同于 0101 ^ 0001 结果为 0100,十进制结果为 4 |
| ~ | 按位非:反转所有二进制位,即 1 转换为 0,0 转换为 1 | ~5 等同于 ~0101 结果为 1010,十进制结果为 -6 |
| << | 按位左移:将所有二进制位统一向左移动指定的位数,并在最右侧补 0 | 5 << 1 等同于 0101 << 1 结果为 1010,十进制结果为 10 |
| >> | 按位右移(有符号右移):将所有二进制位统一向右移动指定的位数,并拷贝最左侧的位来填充左侧 | 5 >> 1 等同于 0101 >> 1 结果为 0010,十进制结果为 2 |
| >>> | 按位右移零(无符号右移):将所有二进制位统一向右移动指定的位数,并在最左侧补 0 | 5 >>> 1 等同于 0101 >>> 1 结果为 0010,十进制结果为 2 |
# 3.8 优先级
# 4.操作符
- delete
- typeof 操作符用于返回一个值的数据类型,例如字符串、数字、布尔值等。
- instanceof 操作符用于检查一个对象是否是另一个对象的实例。
- in 操作符用于检查一个对象是否包含某个属性
# 5.注释
//对整行进行注释/* .. **/对区块注释
// var a = 123
var a = 2
1
2
2
/*
var a = 123
var a = 2
**/
var a = 111
1
2
3
4
5
2
3
4
5
# 6.严格模式
← ECMAScript 二.表达式 →