1. [TOC] >[success] # 操作符 ~~~ 1.针对一些难懂的和常见记不住的问题总结 ~~~ >[danger] ##### 运算元 ~~~ 1. 运算元 —— 运算符应用的对象。比如说乘法运算 5 * 2,有两个运算元;左运算元 5 和右运算元 2; 也称其为“参数” ~~~ >[info] ## 一元操作符 ~~~ 1.只能操作一个值的操作符叫做一元操作符 2.前++ 和 前--, 后++ 和 后-- ~~~ >[danger] ##### 前置型'++' 和 '--' ~~~ 1.前置型是变量的值都在语句求值前运行,简单的记因为在前面所以优先 2. 前置型实际是 下面形式缩写: var a = 1; ++a; 等同于 a = a+1,因此要注意使用完++a 或者 --a ,这个a变量会 是新的赋值而不是原来的1 3.前置的优先级会高于普通的加减优先级 ~~~ ~~~ // 这个 案例 --的优先级高因此 age = age - 1 此时的age是29-2等于28 // 在紧接着 28 +2 因此打印 30 var age = 29 var otherAge = --age+2 // otherAge 结果是30 ~~~ ~~~ var num1 = 2 var num2 = 20 var num3 = --num1 + num2 // 结果21 var num4 = num1+num2 // 结果 21 根据上面第二条 ~~~ >[danger] ##### 后置型'++' 和 '--' ~~~ 1.后置型 和 前置型 区别,前置型使用及更改,后置型属于被求值后才执行 ~~~ ~~~ // 前置 var age = 29 console.log(++age) // 30 // 后置 var num = 29 console.log(num++) // 29 console.log(num) // 30 再次调用后才变化 ~~~ ~~~ var num1 = 2 var num2 = 20 var num3 = num1-- + num2 // 结果22 var num4 = num1+num2 // 结果 21 再次使用才改变 ~~~ >[info] ## 三元运算符 ~~~ 1. 三元运算符,被称为“三元”是因为该运算符中有三个操作数(运算元),是 JavaScript 中唯一一个有这么多 操作数的运算符 var result = condition ? value1 : value2; ~~~ >[info] ## 相等操作 ~~~ 1.相等(==) 会先转换操作数,然后再比较他们的相等性 2.不相等(!=) 跟上面同理 3.全等(===) 在两个数未经转换的时候就进行比较 4.全不等(!==) 同上 5.简单的总结就是,相等也就是双等是会将数据转成同一个数据类型进行比较, 全等 数据类型不一致也认为结果是错的 ~~~ >[danger] ##### 相等比较/不相等比较 ~~~ 1.如果操作类型中有个是布尔类型,会将true 转成 1 , 将false 转成 0 2.如果一个字符串,一个是数字类型会将字符串转换成数字类型,在进行比较 3.如果一个是对象,另一个不是会将调用对象的valueOf() 方法,用返回的基本类型进行比较 4.null 和 undefined 比较为true 5.NaN 和任何 类型相比都是假,只能用isNaN() 进行比较,包括NaN == NaN 返回false 6.都是对象比较内存地址 ~~~ ~~~ null == undefined // true NaN == NaN // false 5 == NaN // false NaN == 'NaN' // false 是将字符串转换成数字比较,而不是转换字符串比较注意 NaN != NaN // true false == 0 // true true == 1 // true true == 2 // false true 代表的是1 其他数字都是false undefined == 0 // false null == 0 // false '5' == 5 // true 是将字符串转换成数字比较,而不是转换字符串比较注意 ~~~ >[danger] ##### 全等 和 不全等 ~~~ 1.如果类型不一致 即不相等,因此 null === undefined // false 类型不相等 true === 1 // false 类型不同 ~~~