Web前端之路饥人谷技术博客Web 前端开发

JS运算符和表达式

2017-06-29  本文已影响172人  YM雨蒙

操作符

一元操作符

只能操作一个值的操作符叫做一元操作符。

递增(++)递减(--)操作符,有两个版本:

var age = 29;       
var anotherAge = --age + 2;
alert(age);         //输出28
alert(anotherAge);        //输出30
由于前置递增和递减操作与执行语句的优先级相等,因此整个语句会从左至有被求值,例:
var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2;        //等于21
var num4 = num1 + num2;        //等于21
var num1 = 2;
var num2 = 20;
var num3 = num1-- + num2;        //等于22
var num4 = num1 + num2;        //等于21
var s1 = "2";     s1++;    //3
var s2 = "z";     s2++;    //NaN
var b = false;    b++;    //1
var f = 1.1;    f--;    //0.1000000000009(由于浮点舍入错误导致) 
var o = {
    valueOf: function(){
      return -1;       
    }
};         o--;      //-2

算数操作符

乘法

乘法操作符是由一个(*)表示,用于表示两个数值的乘积处理特殊值,遵循以下规则:

除法

除法操作符有一个(/)表示,例:var result = 66/11; 处理特殊值,遵循以下规则:

求模

求模(余数)操作符有一个(%)表示,例:var result = 26 % 5; //等于1,处理特殊值,遵循以下规则:

加性操作符

加法操作符用(+)表示。 例: var result = 1 + 2; 处理特殊值,遵循以下规则:

var result = 5 + 5;
alert(result);      // 10
var result1 = 5 + "5";
alert(result1);         // "55"

减法

减法操作符用(-)表示,var result = 2 - 1;处理特殊值,遵循以下规则:

var result1 = 5 - true ;    // 4 ,因为true转换为1
var result2 = NaN - 1 ;    // NaN
var result3 = 5 - "" ;     // 5, 因为""被转换为0
var result4 = 5 - null ;   // 5,因为null转换为0

关系操作符

关系操作符用于对两个值得比较,返回时布尔值。包括:小于(<)、大于(>)、大于等于(>=)、小于等于(<=)当关系操作数使用了非数值,遵循以下规则:


相等操作符

ECMAScript提供两组操作符:相等 和 不相等----先转换再比较,全等 和 不全等----仅比较而不转换

相等和不相等

相等操作符有==两个等号表示,返回布尔值,不相等操作符由!=叹号后跟等号组成,这两个操作符先转换再比较(强制转换)转换遵循基本原则:

全等和不全等

全等操作符由===三个等于号表示,只在两个操作数未经转换就相等的情况下返回true.

var result1 = ("55" == 55) ;    //true
var result2 = ("55" === 55) ;    //false

不全等操作符由!==一个感叹号后跟两个等号表示,在两个操作数未经转换就不相等的情况下返回true

var result1 = ("55" != 55) ;    //false
var result2 = ("55" !== 55) ;    //true

记住:null == undefined会返回true,因为它们是类似的值,null === undefined会返回false,因为它们不同类型


布尔操作符

布尔操作符一共有三个:非(NOT) 与(AND) 或(OR).

逻辑非

逻辑非由一个感叹号!表示,返回布尔值,逻辑非操作先将其转化为布尔值,然后取非对其求反.

alert(!false);    //true
alert(!"blue");    //false
alert(!0);    //true
alert(!NaN);    //true
alert(!"");    //true
同时使用两个逻辑非(!!)操作,实际上会模拟Boolean()转型函数的行为

逻辑与

逻辑与操作符由两个和号&&表示,有两个操作数, 例:var result = true && false;

第一个操作数 第二个操作数 结果
true true true
true false false
false true false
false false false

逻辑与操作可以应用于任何类型的操作数,不仅仅布尔值,其他数值类型,遵循以下规则:

逻辑与操作属于短路操作,即如果第一个操作数能够决定结果,不会对第二个操作数求值.

var found = true ;
var result = ( found && someUndefinedVariable ) ;    //会发生错误,不能使用未定义的值
alert( result ) ;   //这一行不会执行
var found = false ;
var result = ( found && someUndefinedVariable ) ;    //不会发生错误,短路操作
alert( result ) ;   // 会执行"false"

逻辑或

逻辑或操作符由两个||两个竖线符号表示,由两个操作符,例:var result = true || false;

第一个操作数 第二个操作数 结果
true true true
true false true
false true true
false false false

与逻辑与操作相似,也遵循类似规则:

逻辑或操作也属于短路操作,即如果第一个操作数为true,不会对第二个操作数求值.

var found = true ;
var result = ( found || someUndefinedVariable ) ;    //不会发生错误
 alert( result ) ;   // 会执行"true"
var found = false ;
var result = ( found && someUndefinedVariable ) ;    // 会发生错误
alert( result ) ;   //  不会执行

条件操作符

语法:variable = boolean_expression ? true_value : false_value;

var max = ( num1 > num2 ) ? num1 :num2 ;
表达式意思是:如果num1>num2(表达式返回true),将num1赋值给max;如果false,将num2赋值给max.

赋值操作符

简单的赋值操作符由等于号=表示,作用是把右边的值赋给左边的量,例:var num = 10;

var num = 10;
num = num + 10;    ==>    num += 10;
x += y // 等同于 x = x + y
x -= y // 等同于 x = x - y
x *= y // 等同于 x = x * y
x /= y // 等同于 x = x / y
x %= y // 等同于 x = x % y
x >>= y // 等同于 x = x >> y
x <<= y // 等同于 x = x << y
x >>>= y // 等同于 x = x >>> y
x &= y // 等同于 x = x & y
x |= y // 等同于 x = x | y
x ^= y // 等同于 x = x ^ y

逗号操作符

逗号操作符可以在一条语句中执行多个操作,例:var num1 = 1, num2=2, num3=3;

var num = ( 5 , 1 , 4 , 8 , 0) ;    //num值为0
虽然不常见,但是这个例子可以理解逗号的这种行为

对象操作符


参考

这些都是一些常见的操作符,好好掌握,嘿嘿,还有 位操作符 还没太熟练,在研究一下,继续努力

上一篇下一篇

猜你喜欢

热点阅读