Javascript运算符知多少

文章导航

    • 算数运算符
      • 多功能加号 +
        • 1 数字运算
        • 2 字符串连接
        • 3 相关符号 ++/+=
      • 减号 -
      • 乘号 * 与除号 /
      • 取模 (取余) %
      • 运算符优先级
    • 比较运算符
    • 逻辑运算符

算数运算符

多功能加号 +

1 数字运算

最基本的功能

var sum = 1 + 2; //3

2 字符串连接

var str = 'hello' + 'world'; //helloworld

字符串加上任何的数据类型都会是一个字符串 (匿名对象略有不同)

var str1 = 1 + "2"; //"12"
var str2 = NaN + "str"; //"NaNstr"
var str3 = undefined + "str"; //"undefinedstr"
var str4 = null + "str"; //"nullstr"
var str5 = [1,2,3] + "str"; //"1,2,3str"

var obj = {name: "lee"}
var str6 = obj+ "str"; // "[object object]str"

// 但是匿名对象结果不同
var str7 = {name: "lee"} + "str"; // NaN
var str8 = "str" + {name: "lee"}; // "str[object Object]"

3 相关符号 ++/+=

  • a++ 等价于 a = a + 1,也等价于 a += 1,是变量自增1的简便写法;
  • += 则是自增任意值的简便写法
    注意 a++++a
  • a++ 是后加,可以理解为先用后加,++a 反之,举个例子
// 可以复制这段代码到控制台查看结果
var a = 1;
console.log(a++) // 1
var sum = a++ +3 + ++a;
console.log(sum) // 9

如何理解:
① 第一次输出a时,a = 1,输出值后a自增得a=2
② sum 运算时,a=2 先加 3 得到5,然后自增得 a=3;++a 先进行自增得 a = 4,再加前面的结果 5 得 9。

减号 -

  • 数值之间得差值运算
  • 如果不是数值之间得运算会得出 NaNNaN (Not a number) 是一个 number 类型得数据,他表示不是一个数。更有意思的是 NaN == NaN 返回的是 false
  • --++ 类似
  • a-=n 等价于 a = a-n (a, n 代表一个值)

乘号 * 与除号 /

a*=n 等价于 a = a*n (a, n 代表一个值)
a/=n 等价于 a = a/n (a, n 代表一个值)

取模 (取余) %

返回两者作商得余数

5%3 //2
-5%3 //-2

a%=n 等价于 a = a%n (a, n 代表一个值)

运算符优先级

  • + - * / 遵循数学运算优先级
  • () 优先级最高
  • = 优先级最低

比较运算符

> < >= <= == != (还有 === !== )

  • 比较数值的大小
  • 英文字母、符号之间比较的是 ASCII
  • 中文字符之间比较的是 Unicode

比较运算符的返回结果为 Boolean 值

10 > 8 //true
"10" > "8" //false, 字符串之间比较看的是ASCII,从首位开始比较
"10" > 8 //true, 先将"10" 转成数字

"ok" > 9 //false
"ok" < 9 //false, "ok"不能转成数字,所以只能是 NaN

NaN不等于任何值,包括NaN

NaN == NaN //false

逻辑运算符

逻辑运算符有三种:&& || !

逻辑表达式是会返回数据的(不是返回布尔值):

  1. && 返回第一个为 false 的表达式的值 (如果所有表达式都为 true,则返回最后一个表达式的值)
true && 0 && 5 //0
3-2 && 4 && 5 //5

&& 还可以做短路语句

res.data.length > 0 && console.log(data)
  1. || 返回第一个为 true 的表达式的值 (同样,如果所有表达式都为 false,则返回最后一个表达式的值)
    || 可以在取值时去有效值或设置默认值
function formatData(date){
	date = date || new Date() //如果date没有值就设为当前日期
	...
}
  1. ! 取反

下面的这 6 个值 undefined, null, NaN, "", 0, false 转换为布尔值是 false,其他值则为 true

注意: 条件语句就是将 && || ! 返回的数据转化为 Boolean

你可能感兴趣的:(JavaScript,javascript,算术运算符,逻辑运算符,比较运算符,js运算符)