javascript运算符和表达式

199 阅读2分钟

运算符

表达式

表达式 = 操作符 + 操作数

  • 每个表达式都有一个运算结果,该结果叫做 返回值,返回值的类型叫做返回类型 所有的表达式可以当作数据使用
  1. = :该表达式返回赋值的结果
  2. . :返回属性的值(同[]
  • console.log函数调用返回的结果为undefined

chrome浏览器控制台的环境是REPL环境(读 -- 执行 -- 打印 -- 循环) 除了输出表达式的值外,还会输出表达式的返回值

  1. typeof(1/0) number
  2. typeof 1/0 NaN
  3. 0/0 NaN
  4. NaN和任何数字做任何运算得到的结果都为NaN

isNaN 判断一个属是不是NaN isFinite 判断一个数据是不是有限的

  • isNaN(undefined) true
  • isNaN(null) false
  • isFinite(null) true
  • isFinite(undefined) false

其他类型使用算树运算符

  1. 除加号之外的运算符 将原始值转换为数字类型(自动完成转换),然后进行运算
  • boolean : true -> 1 false -> 0
  • string: 如果字符串内部是数字,则转换为数字,否则变换为NaN (+"Infinity" --> Infinity)无法识别表达式
  • null: 0 null + null == 0
  • undefined: NaN
  • 对象类型 : "[object Object]" --> NaN
  • {}*5 报错 {}被当作语法块进行操作 ({}*5) NaN
  1. 加号运算符 加号一边有字符串, + 变为字符串拼接操作

如果两边都是字符串,则直接进行拼接 如果一边是字符串,另一边为其他类型: 数字 --> 数字字符串 boolean --> 字符串true/false null --> "null" undefined --> "undefined" 对象 --> "[object Object]" 两边都没有字符串 对象 + 123 .--> "[object Object]123"

  1. 自增 自减 x++ : 将x自增一,返回自增之前的值 ++x : 将x自增一,返回自增之后的值

x-- : 将x自减一,返回自减之前的值 --x : 将x自减一,返回自减之后的值

###优先级

++ --
* / %
+ -

从左到右依次查看,如果遇到操作数,将数据的值直接取出,如果遇到两个相邻的运算符,并且左边的运算符大于右边的运算符,则直接运行左边的运算符
var x = 1;
var y = x + x++ * ++x;
console.log(y);   //4
var x = 1;
y = x++ + ++x * ++x + ++x; //18