js基础-运算符/基础逻辑语句/常见bug报错

578 阅读2分钟

运算符

算术运算符

+ - * / % 加减乘除取余数

优先级按照运算的优先级来执行 优先级相同时从左到右执行代码

赋值

将等号右边的值赋予给左边, 要求左边必须是一个变量 简写为+= -= *= /=

一元运算符

++ -- 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:无效的赋值操作 = 要求左边的一定是变量