JS学习基本概念02之操作符总结

2017-06-01  本文已影响14人  胡不归vac

JS中的操作符与其他语言大体上是相似的,这里总结一些需要注意的地方.

一元操作符

布尔操作符

  1. 第一个是对象,返回第二个操作数
  2. 第二个是对象,则只有第一个是true时才返回该对象
  3. 第一个是null, undefined, NaN,则返回相应的null, undefined, NaN
  1. 第一个是对象,则返回第一个操作数
  2. 第一个求值结果为false,则返回第二个操作数
  3. 两个操作数都是null, undefined, NaN,则返回相应的null, undefined, NaN

乘性操作符

在操作数不为数值的时候,会执行自动的类型转换.

  1. 零被零除--> NaN
  2. Infinity 被 Infinity 除--> NaN
  1. 被除数无穷大而除数有限大,则为NaN
  2. 被除数无穷大而除数为0,则为NaN
  3. Infinity被Infinity除,则为NaN
  4. 被除数有限大而除数无穷大,结果为被除数
  5. 被除数为0,结果为0

加性操作符

  1. Infinity加-Infinity,结果为NaN
  2. 有一个是字符串,则另一个数转换为字符串,然后拼接
  3. 如果有一个操作数是对象或者数值或布尔值,另一个操作数是字符串,则将非字符串转换为字符串,对于undefined和null,使用String()转换为字符串
  1. Infinity - Infinity = NaN
  2. -Infinity - (-Infinity) = NaN
  3. 有一个操作数是数值,另一个操作数为非数值,则转换为数值.

总结:加法中,如果有一个字符串,则优先将另一个转换为字符串,减法中,如果有一个是数值,则优先将另一个转换为数值

关系操作符

关系操作符有小于(<),大于(>),小于等于(<=)和大于等于(>=),优先比较的数据类型是数值,返回布尔值

  1. 两个操作数都是数值,则比较数值大小
  2. 两个操作数都是字符串,则比较第一个字符的编码
  3. 有一个数值,将另一个转换为数值,进行比较
  4. 注意:比较时 null转换为0 ,undefined转换为NaN

相等操作符

主要分为相等(==)和全等(===),区别在于相等操作符操作之前会进行类型的转换,全等操作符不会进行类型转换。
相等操作符优先进行数值的比较

  1. 一个操作数是字符串,另一个是数值,则转换为数值再比较
  2. 一个是对象,则调用valueOf()方法,再比较
  3. 在比较相等性之前,null和undefined不能转换为其他任何值,而在关系比较时,null会转换为0,undefined会转换为NaN
    如下
var a = null;
console.log(a == 0);       //false,因为null不能转化为其他
console.log(a >= 0);       // true, 因为在关系操作符中,null转换为0
console.log(a <= 0);       // true, 因为在关系操作符中,null转换为0
  1. 在对象的比较中,只有两个操作数指向同一个对象,才会返回true
  2. 全等(===)操作符则两个操作数必须完全相同才会返回true

条件操作符

就是常见的expression ? true_value : false_value

赋值操作符

逗号操作符

使用逗号操作符可以在一条语句中执行多个操作

var num = 1,num2 = 2,num3 = 3;

还可以用于赋值,在用于赋值时,总会返回最后一项

var num = (5,4,3,2,0);    // num的值为0
上一篇 下一篇

猜你喜欢

热点阅读