运算符
算术运算符
+ - * / % 加减乘除取余数
优先级按照运算的优先级来执行 优先级相同时从左到右执行代码
赋值
将等号右边的值赋予给左边, 要求左边必须是一个变量 简写为+= -= *= /=
一元运算符
++ -- num = num++ 先运算在自增
num = ++num 先自增在运算
比较运算符
大于> 小于< 大于等于>= 小于等于<=
比较结果为boolean类型,即只会得到true或false
NaN不等于任何值,包括它本身
逻辑运算符
- && 逻辑与 并且 两边为true 则结果为true
- || 逻辑或 或者 两边有一边为true 则结果为true
- ! 逻辑非 取反 true变false false变true
逻辑运算短路
只存在于 && 和 || 中,当满足一定条件会让右边代码不执行 过左边能得到整个式子的结果,因此没必要再判断右边 运算结果为右边的表达式
运算符的优先级
一元运算符里面的逻辑非优先级最高
逻辑与比逻辑或优先级高
分支结构
if语句
单分支结构
if(条件){
满足条件执行的代码
}
双分支结构
if(条件){
满足条件执行的代码
}else{
不满足条件执行的代码
}
多分枝结构
if(条件1){
满足条件1执行的代码
}
else if(条件2){
不满足条件2执行的代码
}
else{
代码n
}
三元运算符
条件?满足条件执行的代码:不满足条件执行的代码
常见bug报错信息分析
Unexpected end of input:语法有问题 当前场合: 双引号 包裹 单引号, 单引号包裹双引号
尽量不要这么做 is not defined: *** 没有定义,如果是字符串值没有引号,字符串值也会当成变量来处理
*** is not defined:***没有声明
** has already been declared,说明 ** 重复声明了
Cannot access 'age' before initialization:i不能在初始化age之前访问age
Assignment to constant variable 赋值 给 常量 变量 不允许,常量只能在定义的时候赋值
基本类型: 数值,字符串。bool, 空类型 undefined
如果一个声明了但是没有赋值,默认为undefiend
变量的本质就是内存中的一块地址空间
变量命名不在于长短,而在于语义化
Invalid left-hand side in assignment:无效的赋值操作 = 要求左边的一定是变量