JavaScript运算符的概述分类及其优先级

运算符的概述

JavaScript提供了一组用于操作数据值的运算符,又可以称之为操作符,这些运算符可以按照作用的不同,或者操作变量数量的不同进行分类。

1.算数运算符的基本操作比较简单,但我们需要注意以下的几种情况;

*如果运算数中的一个或者两个字符串类型,那么JavaScript会自动转换为数字值,再进行计算。
如果运算数中的一个或两个是字符串类型,但是其中的字符串不是数字,JavaScript会自动转换数字值    
,得到NaN结果
任何一个运算数是NaN,结果都是NaN。
布尔值false和true会转换为0和1进行计算*

2.运算符 加减以及求余,自增的用法

var num = 50 ;
var str1 = '范甘迪';
var str2 = '200';
var boo = true;

//加法num 数字加法就是数字相加
 var a1 = num+200
console.log(a1)

//如果是字符串进行相加的话,结果就是将两个字符串相连接
var a2 = str1+200
console.log(a2)

//如果布尔类型进行加法计算,先将布尔值转换为数字值,再进行加法计算
var a3 = boo+200
console.log(a3)
//如果字符串进行减法计算的话 那么先将字符串类型转换为数字值,再进行减法计算
var a4 =str1-50
console.log(a4)

//减法,先将其他类型转换为number类型,再进行计算
var a4 = num -100
console.log(a4)

//如果布尔类型进行减法计算,那么先将布尔类型转换为数字值,再进行减法计算
var a5 = boo-50
console.log(a5)
//自增运算符是来操作当时变量的值;每一次自增+1
/*有两种自增方案
1前置自增运算符++变量名 ,先增加后赋值.
2后置自增运算符-变量名++,先赋值再自增
* */
var num = 10;
console.log(num);//10

var a1 = ++num;
console.log(a1);//11
console.log(num);//11

var a1 = num++;
console.log(a1);//11
console.log(num);//12
  • 运算符的有限级别
* 运算符的优先级别
* 运算法则是先运算优先级别较高的运算符
* 如果运算的级别相同的话则从左至右计算
`console.log(1+2-3*4) //-9 乘法优先级别更高所以先运算乘法再从左到右运算
console.log(5+50%3)//7 余数的优先级高
console.log(2*4%2)//余数与乘法优先级一样高所以自左到右计算

var num = 2;
console.log(5*++num)//前置自增优先级更高
//大于小于比较运算符 大小比较运算符的结果类型为布尔类型
/*
* 1num类型*/
console.log(1>2)//false因为1小于2 所以结果为false假
console.log(1<2)//true 1小于2 是正缺的所以结果为true
console.log(1<=2)//true

//booean类型比较运算;先将Boolean类型转换为number类型
console.log(true>false)//true true=1 false=0

//string类型 将string转换为Unicode码然后进行比较
//若比较的是英文单词那么 从左至右字母依次比较Unicode码进行比较
console.log('a'<'b')//true
console.log('adc'>'asc')//false
console.log('和'<'打')//true

相等与不等运算符

/*相等与不相等运算符
* 两个== 表示相等; 不等则是!=表示*/
console.log(1==2)//false1不等于2所以结果为false
console.log(1!=2)//true 1不等于2 缩减结果为true

//boolea类型
console.log(true==true)//true
console.log(false!=true)//true
console.log(false==3)//false

//string 类型
console.log('s'=='s' )//true
console.log('d'!='我')//true
console.log('213'==213)//true只比较其数值不比较类型

全等与不全等运算符;

//全等不全等,不但不叫值还比较类型
console.log(1 === 10);// true

console.log('10' === 10);// false
console.log('10' === '10');// true

isNaN()函数与isfinite()函数的作用

//isNaN()函数 它的作用就是判断当前的值是否为NaN
//结果为true结果是NaN
//结果为false是结果不是NaN 因为他不是一个数值
console.log(isNaN(1))// 因为他不是NaN所以结果为false
console.log(isNaN(‘大话西游’))//因为他转换为number类型为NaN所以结果为true
//isfinit()函数表示判断当前值是否为无穷大
//结果为false时表示当前的值时无限大.
//当结果为true时 表示当前数值为有限大
var a = 100/0;
console.log(a)//infinety 表示输出的结果为无限大
console.log(isFinite(a))//false
逻辑与运算符

console.log(true && true);// true
console.log(true && false);// false
console.log(false && true);// false
console.log(false && false);// false
/*
    将逻辑与运算符的两个操作数,转换为布尔类型
    * 当左边的操作数为true时,结果为右边操作数的值
    * 当左边的操作数为false时,结果为左边操作数的值
 */

`console.log(100 && 1);// 1
console.log(1 && 0);// 0
console.log(0 && 1);// 0
console.log(0 && 0);// 0

console.log(true && true);
console.log(true && false);
console.log(false && true);
console.log(false && false);

console.log('卧龙学苑' && '卧龙学苑');// 卧龙学苑
console.log('优秀' && '');// ''
console.log('' && '痴迷');// ''
console.log('' && '');// ''

console.log('答案' && 1);// 1
console.log(false && 0);// false

逻辑或运算符:

console.log(true || true);// true
console.log(true || false);// true
console.log(false || true);// true
console.log(false || false);// false
`
/*
    将逻辑与运算符的两个操作数,转换为布尔类型
    * 当左边的操作数为true时,结果为左边操作数的值
    * 当左边的操作数为false时,结果为右边操作数的值
 */
console.log(100 || 1);// 100
console.log(1 || 0);// 1
console.log(0 || 1);// 1
console.log(0 || 0);// 0

console.log(true || true);
console.log(true || false);
console.log(false || true);
console.log(false || false);

console.log('卧龙学苑' || '卧龙学苑');// 卧龙学苑
console.log('卧龙学苑' || '');// 卧龙学苑
console.log('' || '卧龙学苑');// 卧龙学苑
console.log('' || '');// ''
 
赋值的扩展运算符
var b = 10, c = 20;

var a = b + c;
console.log(a);// 30

// b = b + c;
// 等价写法 - 赋值扩展运算符的性能要比赋值运算符更高
b += c;
console.log(b);// 30
条件运算符:

var result = 8 > 9 ? '对' : '错';

 1. console.log(result);

var score = 95;
score > 90 ? console.log('优秀') : console.log('及格');
/*当条件运算符条件为true时输出的结果为冒号前面的值 条件为false时输出结果就是冒号后面的值*/

嵌套运算符:

**
var score = 55;

    /*嵌套条件运算符
    * 优点 - 扩展了条件运算符本身的计算能力
    * 缺点
      * 可读性比较差
      * 性能随着嵌套的层级越多越差
    * 建议 - 最多不要超过三层嵌套*/
var result = score > 90 ? '优秀' : (score > 80 ? '良好' : (score > 60 ? '及格' : '不及格'));
console.log(result);**
    原文作者:李通
    原文地址: https://segmentfault.com/a/1190000015923634
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞