标签: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运算表达
标签:javascript 网站前端
原文地址:http://xmdevops.blog.51cto.com/11144840/1846123