首页 > 代码库 > 网站前端_JavaScript.0005.JavaScript运算表达
网站前端_JavaScript.0005.JavaScript运算表达
一元运算符:
1.递增++递减--
var userAge = 25 console.log( // 25 - 保持原样 userAge, // 26 - 在原来的基础上加1并返回 ++userAge, // 25 - 在原来的基础上减1并返回 --userAge, // 25 - 先返回再在原来的基础上减一 userAge++, // 26 - 线返回再在原来的基础上减一 userAge-- )
2.前置后置区别
说明: 在没有赋值操作,前置和后置一样,但在赋值操作时,前置会先加后返回,后置会先返回在加
3.其它类型效果
// String - 可以转换为数值,返回90 var testValue = ‘89‘; testValue++;console.log(testValue) // String - 无法转换为数值,返回NaN var testValue = ‘ff‘; testValue++;console.log(testValue) // Boolean - 可以返回为数值, 返回1 var testValue = false; testValue++;console.log(testValue) // Number - 可以转换为数值, 返回3.15 var testValue = ‘3.14‘; testValue++;console.log(testValue) // Object - 支持转换为数值, 返回2 var testValue = { valueOf: function(){ return 1 } }; testValue++;console.log(testValue)
正负运算符:
// String - 自动隐式转换为数值型,失败返回NaN var testValue = ‘89‘;console.log(+testValue, -testValue) var testValue = ‘ff‘;console.log(+testValue, -testValue) // Boolean - 可转换为数值1,返回1, -1 var testValue = true;console.log(+testValue, -testValue) // Number - 可以转换为数值3.14,返回3.14, -3.14 var testValue = true;console.log(+testValue, -testValue) // Object - 支持转换为数值,返回1314, -1314 var testValue = { toString: function(){ return 1314 } };console.log(+testValue, -testValue)
算术运算符:
1.加法
说明: +在数值运算时表示加法,在字符串拼接时表示拼接,所以从左到右加字符串时会自动拼接字符串
// Number + Number 返回数值 var testValue = 1 + 2;console.log(testValue) // 任意值 + NaN 返回NaN var testValue = 1 + NaN; console.log(testValue) // Infinity + Infinity 返回Infinity var testValue = Number.POSITIVE_INFINITY + Number.POSITIVE_INFINITY;console.log(testValue) // - Infinity + -Infinity 返回 -Infinity var testValue = Number.NEGATIVE_INFINITY + Number.NEGATIVE_INFINITY;console.log(testValue) // Infinity + -Infinity 返回NaN var testValue = Number.POSITIVE_INFINITY + Number.NEGATIVE_INFINITY;console.log(testValue) // Number + Boolean 返回数值 var testValue = 100 + true;console.log(testValue) // Number + String 返回字符串 var testValue = 100 + ‘100‘;console.log(testValue) // Number + Number + String 先计算数值然后转为字符串 var testValue = 100 + 100 + ‘100‘;console.log(testValue) // Number + 对象 返回依赖对象的valueOf()和toString()的方法 var testValue = 100 + { toString: function(){ return 100 } };console.log(testValue)
2.减法
说明: -没有歧义,所以会自动转换两边操作数为数值然后再运算,运算原理同上
3.乘法
说明: -没有歧义,所以会自动转换两边操作数为数值然后再运算,运算原理同上
3.除法
说明: -没有歧义,所以会自动转换两边操作数为数值然后再运算,运算原理同上
4.取模
说明: -没有歧义,所以会自动转换两边操作数为数值然后再运算,运算原理同上
关系运算符:
说明: 用于比较的运算符作为关系运算符(< <= < >= == != === !==)运算符
var userName = {} var userAge = {} console.log( // 两个操作数都是数值,则数值比较,返回布尔值 2 > 1, // 两个操作数都是字符串,则按照顺序字符串的ascii值比较,返回布尔值 ‘limanman‘ > ‘liuzhenzhen‘, // 其中有一个操作数是数值,而另一个操作数是非纯数字的字符串则会转换为NaN,所以与任何数值比较都为false ‘1314A‘ > 1314, // 其中有一个操作数是对象,则先调用valueOf()方法或toString()方法,再用结果比较 ‘521‘ > { toString: function(){ return 520 }, }, // 在不需要转换的任何情况下,null和undefined是相等的,因为undefined继承自null null == undefined, // 其中一个操作数为NaN时,无论另一个操作数是什么都返回false NaN == NaN, // 在值相等的基础上类型也要相等判断可使用=== null == undefined, /* 每个新建的对象引用的是不同的地址,可通过==来判断是否引用自同一个地址 * 可使用var userAge = userName 保证他们引用的是同一个对象地址 */ userName == userAge )
逻辑运算符:
说明: 逻辑运算符通常用于布尔值的操作,一般和关系运算符配合使用,有三个逻辑运算符(AND/OR/NOT),逻辑运算属于短路操作,返回值为最终判定值
1.逻辑运算两边的操作数如果是对象的话,则对象永久返回为真,所以与运算时返回另一个操作数,或运算时返回对象本身
2.逻辑运算两边的操作数如果有一个为NaN或null或undefined则返回NaN/null/undefined
3.逻辑非可以用于任何值,无论值是什么类型的,这运算都会返回一个布尔值,对于NaN/null/undefined返回都是true,逻辑非可以使用多次,多之前次的结果取反
// 逻辑运算符 - 对象横为真 var userInfo = { toString: function(){ // 即使return null时逻辑运算也为true return null } } console.log( // 注意: 返回的是&&两边表达式的值不是布尔值,这里返回1314 userInfo && 1314, // 注意: &&时,只判断false,即知道结果,所以直接返回false false && userInfo, // 注意: ||时,需要判断到userInfo才知道结果,所以返回userInfo false || userInfo, // 注意: 操作数中第一个为NaN或null或undefined,返回NaN/nall/undefined null && undefined, null && NaN, undefined && null, undefined && NaN, NaN && undefined, NaN && null, // 注意: 取反可以对任意数据类型取反,而且支持二次取反,!null, !NaN, !undefined返回true !null, !NaN, !undefined )
位的运算符:
说明: 位运算比较基于底层,性能和速度都非常好,但是难度比较大,位运算包括非(~),位与(&),位或(|),位异或(^),左移(<<),右移(>>),无符号右移(>>>)
拔高: http://www.zhihu.com/question/38206659, 位运算的奇技淫巧
赋值运算符:
// 普通赋值 var testValue = 100 // 复合赋值 testValue += 100 testValue -= 100 testValue *= 100 testValue /= 100 testValue %= 100 testValue <<= 100 testValue >>= 100 testValue >>>=100
其它运算符:
1.字符串运算符,字符串运算符只有一个,‘+‘,作用是将两个字符串相加,至少一个操作数为字符串
2.逗号运算符,可以在一条语句中执行多个操作
3.三元条件运算符,其实就是if语句的简写形式
// 字符串运算符 var testValue = 100 + ‘100‘ console.log(testValue) // 逗号运算符 var i = 10, j = 20 console.log(i, j) // 三元运算符 var testValue = 2>1?"对":"错误" console.log(testValue)
本文出自 “ζ自动化运维开发之路ζ” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1846123
网站前端_JavaScript.0005.JavaScript运算表达