javascript变量运算符详解

1.运算符

JavaScript中常见的运算符包含:赋值运算符、算数运算符、等性运算符、关系运算符、条件运算符、布尔运算符、逻辑运算符……

1.赋值运算符 =

赋值运算符“=”,用于给某个变量赋值。

代码示例:

var x;
x=5;        //把数字 5 赋值给变量x
x='hello';  //把字符串 hello 赋值给x

除了简单的赋值运算符“=”之外,还有一种常用的复合赋值运算符

1.1 加法/赋值运算符 +=

加法赋值运算符x+=y,等价于x=x+y,它是一种简写形式。

代码示例:

var x=5;
x+=1;           //等价于  x=x+1;
console.log(x);     //6

1.2 减法/赋值运算符 -=

减法赋值运算符x-=y,等价于x=x-y,它是一种简写形式。

代码示例:

var x=5;
x-=1;           //等价于  x=x-1;
console.log(x);     //4

2.算数运算符

JavaScript中的算数运算符主要用在数字类型变量的数学运算,包含加法、减法、乘法、除法、取余等等。

代码示例:

var x=5,y=2;
console.log(x+y);    //加法运算,结果:7      
console.log(x-y);    //减法运算,结果:3  
console.log(x*y);    //乘法运算,结果:10
console.log(x/z);    //除法运算,结果:2.5
console.log(x%y);    //取余运算,结果:1,   5除以2,商为2,余数为1

3.等性运算符

等性运算符主要用于判断两个变量的值和类型是否相等。判断返回的结果为一个布尔值。

3.1等号和非等号

在JavaScript中等号由双等号(==)表示,当双等号两边运算数相等时,返回结果为true。

代码示例:

var x=5,y=5,z=9;
console.log(x==y);      //true
console.log(x==z);      //false

非等号由感叹号加等号(!=)表示,当非等号两边的运算数不相等时,返回结果为true。

代码示例:

var x=5,y=5,z=9;
console.log(x!=y);      //false
console.log(x!=z);      //true

注意:在比较两个运算数是否相等时,JavaScript引擎会将这两个运算数进行类型转换

执行类型转换的规则如下:

  • 布尔值转换成数字:false转换成0,true转换成1.
  • 数字与字符串:字符串转换成数字。
  • 对象与字符串:把对象转换成字符串。
  • 对象与数组:把对象转换成数组。

在比较时,对于一些特殊的运算数,遵守以下规则:

  • null和undefined相等。
  • 不能把null和undefined转换成其他值。
  • 只要有一个运算数是NaN,等号返回false,非等号返回true。
  • 如果两个运算数都是对象,比较的是他们的引用值。
  • 如果两个运算数指向同一对象,等号返回true。
  • 即使两个数都是NaN,等号仍然返回false。

特殊的情况:

表达式返回值
null == undefinedtrue
"NaN" == NaNfalse
5 == NaNfalse
NaN == NaNfalse
NaN !=NaNtrue
false == 0true
true == 1true
true == 2false
undefined == 0false
null == 0false
"5" == 5true

3.2全等号和非全等号

全等号和非全等号所做的事与等号和非等号相同,只是在检查相等性前,不执行类型转换

全等号由三个等号表示(===),检查时不仅要值相等,更要类型相等。

代码示例:

var x=5;
var y='5';
console.log(x==y);      //等号检查,类型转换后返回 true
console.log(x===y);     //全等检查,由于x时number类型,y时string类型,类型不同,返回false

4.关系运算符

关系运算符执行的是比较运算,通常用于判断两个变量哪个大?哪个小?关系运算符都返回一个布尔值。

常用的关系运算符有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)

代码示例:

var x=5,y=3,z=5;
console.log(x>y);       //true
console.log(x<y);       //false
console.log(x>=z);      //true
console.log(x<=z);      //true

4.1字符串与字符串之间的关系比较

对于数字类型的变量关系比较我们遵循数学原则,但是对于字符串类型的变量,如去要进行关系比较则需按照ASCII码;

ASCII码对照表见下图:

javascript变量运算符详解

代码示例:

var x="Hello",x="world";
console.log(x>y);       //false

如上述代码所示,如果我们要比较Hello和world这两个字符串,首先比较首字符的大小,对照ASCII字符编码表,H的十进制编码为72,w的十进制编码为119,所以变量x应该是小于变量y,故而上面代码返回结果为false。

4.2数字与字符串之间的关系比较

当一个字符串与数字进行关系比较时,JavaScript引擎会将字符串转换成数字,然后按照数字顺序比较它们。

代码示例:

var x="30",y=5;
console(x>y);       //true

在上述示例代码中,字符串"30"将被转换成数字30,然后与数字5进行比较。

但是,如果字符串不能转换成数字又该如何呢?

var x="hello",y=9;
console.log(x>y);   //false

字符串"hello"不能转换成有意义的数字,所以在类型转换的时候返回的是NaN。
==任何包含NaN的关系运算都要返回false==,因此上述代码也输出false。

5.条件运算符(三元运算符)

条件运算符又称为三元运算符,它在JavaScript中是一个既有比较又有赋值的运算符。语法如下:

var x=booleanExpressin ? trueValue : falseValue;

该运算符的意思是:根据booleanExpressin条件表达式的计算结果,如果条件表达式返回的结果为true,则把trueValue赋值给x,如果条件表达式返回的结果为false,则把falseValue赋值给变量。

代码示例:

var x=5,y=10;
var z=(x>y)?x:y;
console.log(z);     //10

6.逻辑运算符

JavaScript中的逻辑运算符有三种:NOT(取反)、AND(逻辑与)和OR(逻辑或)

在进行逻辑运算之前,JavaScript会将变量转换成布尔类型。因此我们需要了解一下不同类型的变量转换为布尔类型时的逻辑值:

参数说明转换结果
""空字符串false
"hello"非空字符串true
" "空格true
0数字0false
5.5非零正数true
-4非零负数true
null false
NaN false
undefined false
Object对象true
Array数组true

6.1 NOT 取反

逻辑 NOT 取反运算符,意思是得到与当前参数相反的结果,由感叹号(!)表示,取反运算符返回的一定是布尔值。

注意:如果运算数是undefined,发生错误。

代码示例:

var bFalse = false;
var sRed = "red";
var iZero = 0;
var iThreeFourFive = 345;
var oObject = new Object();

console.log(!bFalse);   //true
console.log(!sRed);   //false
console.log(!iZero);   //true
console.log(!iThreeFourFive);   //false
console.log(!oObject);   //false

6.2 AND 逻辑与

逻辑与AND运算符,进行运算时需要两个参数,只有当两个参数转换都为true时,逻辑与才返回true。逻辑与AND运输符用双和号(&&)表示。

代码示例:

var x=true,y=false;
console.log(x&&y);  //false

注意:逻辑与AND运算的运算数可以是任何类型的,如果某个运算数不是原始的布尔类型,逻辑与AND运算不一定返回布尔值:

  • 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
  • 如果两个运算数都是对象,返回第二个对象。
  • 如果某个运算数是 null,返回 null。
  • 如果某个运算数是 NaN,返回 NaN。
  • 如果某个运算数是 undefined,发生错误。

6.3 OR 逻辑或

逻辑或OR运算符,进行运算时需要两个参数,只要当两个参数中其中一个为true时,逻辑与返回true。逻辑或OR运输符用双竖线(||)表示。

代码示例:

var x=true,y=false;
console.log(x||y);  //true

注意:逻辑或 OR 与逻辑与 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值:

  • 如果一个运算数是对象,并且该对象左边的运算数值均为 false,则返回该对象。
  • 如果两个运算数都是对象,返回第一个对象。
  • 如果最后一个运算数是 null,并且其他运算数值均为 false,则返回 null。
  • 如果最后一个运算数是 NaN,并且其他运算数值均为 false,则返回 NaN。
  • 如果某个运算数是 undefined,发生错误。

相关推荐