javaScript快速入门之运算符

运算符


操作符:通过运算符可以对一个值或多个值进行运算,并获取运算的结果。

// typeof 也是一个运算符,可以获得一个值得类型
var a = 123;
var res = typeof a;
console.log(res); // number
//Ta可以返回 number string boolean undefined object

算数运算符:

用于计算:不会对原变量进行影响,要通过返回值

  • 任何值做 - * / 运算时都会自动转换成Number类型(为一个值-0,*1,/1,做类型转换)
1。加法运算(+) 
var a  = 666;
res = a + 1;
console.log(res);  // 667

//对非number类型的值会先行转换
res = true + 1; // 2 
res = true + false // 1
res = 2 + NaN; // NaN 任何值和NaN做运算都是NaN

//与字符串的特殊情况
res = '123' + '456'; // 如果字符串进行加法,进行拼接字符串
res = 123 + '1';   // 1231 任何值和字符串做加法,先将任何值转换为字符串在做加法
res = true + 'hello'; //truehello
res = 123 + ''; // '123' 将数字转换成字符串(隐式的类型转换)实际上也是调用了String()函数,String(),toString()
res = 1 + 2 + '3'; // 33
res = '1' + 2 + 3; //'123'

2.减法运算(-)
res = 100 - 5; // 95
res = 100 - true; // 99
res = 100 - '1'; //99 除了加法中字符串,其他都会转换成number

3.乘法运算(*)
res = 2*2; //4
res = 2 * 8; //16
res = 2 * undefined; // NaN
res = 2 * null ;  // 0

4.除法运算(/)
res = 4 / 2; //2

5.取模运算(%)【取余数】
res = 9 % 3; // 0



一元运算符

只需要一个操作数,也就是一个值

  • 对其他的数据类型使用 + 将其转换为 number,原理和number()函数一样
var a = 12;
a = +a;  // 正号不会对数字产生影响
console.log(a)

a = -a;  // -12 对数字进行负号的取反

a = true;
a = -a;   // -1

a = '18';
a = -a;  // -18 

res = 1 + '2' + 3; //'123'
res = 1 + +'2' + 3; //6

自增和自减运算符

自增:

  • 通过自增可以使变量在自身的基础上增加 1 ++

  • 对于一个变量自增以后,原来的变量会增加一,影响到原变量

  • 不管是前++ 还是后++ 都会使原变量立即自增

    var a = 1;
    a++;   //后++  1
    console.log(a); //2
    
    var a = 1;
    ++a;   //前++   2
    console.log(a); //2
    
    //不同点
    a : 变量
    a++ :表达式
    a++ 的值等于原变量的值
    ++a 的值是自增以后的值
    
    var a = 10;
    a++;  //10 在10的基础上自增
    console.log(c++); //11  第二个在11的基础上自增
    
    var a = 10;
    console.log(++a); //11
    console.log(++a); //12
    
    var a = 10;
    var res = a++ + ++a + a; // 34;
    ----------10----12----12--= 34
    
    var a = 10;
    a = a++; //11
    
    

自减:

  • 通过自减可以使变量在自身的基础上减1
var a = 10;
a--;  //10 变量的原值
--a;  // 8 变量的新值

逻辑运算符

布尔值的情况

三种逻辑运算符 !(非) &&(与) ||(或)

  • !:用来对一个值进行非运算(利用 !!a 进行转换布尔值,隐式类型转换)
!
var a = true;
a = !a;  // 要有返回值
console.log(a); // false

var a = true;
a = !!a; // true

var a = 10;
a = !a; // false
  • && :可以对符号两侧的值进行与运算并返回结果(只有两个都为true才会返回true)[找false]
var res = true && true; // true
res  = true && false;  // false
res = false && false;  // false

true && alert("hello"); // 会执行
false && alert('hello'); //只要第一个为false就不会看第二个值
  • || :两个都是false才返回false,只要有一个true就会返回[找true] 短路
var res = false || false; // false
res = true || false; // true
res = false || true; // true
res = true || true ; //true

true || alert('hello'); //不会找到第二个
false || alert("hello"); //没找到true就继续往下找,执行

非布尔值的情况:

  • 先将其转换成布尔值,运算之后,在返回原值

&&

  • 如果第一个值为false直接返回第一个值(找false)
  • 如果第一个值为true,则直接返回第二个值
var res = 1 && 2;  // 都是true的状态下,则返回后面的值
res = 0 && 2; // 0
res = NaN && 0; // NaN 都是false的情况,返回前面的值

||

  • 如果第一个true直接返回第一个值 (找true)
  • 如果第一个为false,直接返回第二个值
var res = 1 || 2; // 1
var res = 1 || NaN; //1
var res = NaN || 1; //1 

赋值运算符

= : 将右侧的值赋值个左侧的变量

var a = 10;
a = a + 5;
a += 5; // a = a+5
a -= 5;
a *= 5;
a /= 5;
a %= 5;

关系运算符

通过

关系运算符比较两个值之前的大小关系

  • 如果关系成立返回true 否则返回 false
var res = 3 > 2; // true
res = 3 > 4; //false
res = 3 >= 3; // true
res = 1 >= true; // true
res = 1 > "0";  // true
res = 1 <= 'h'; //false 先将字符串转换成数字 NaN任何与NaN比较都是返回false
res = 'a' < 'b'; // true 如果两端都是字符串,不会准换为数字进行比较,指挥比较Unicode字符编码
res = 'abc' <'b';  // true 一位一位进行比较,如果两位一样,则比较下一位
res = '111111' <'3'; // 1的unicode与3的unicode编码比较
res = +'111111' < '3' // false 这样借助一元运算符进行比较就可以了

unicode的应用

Unicode编码表

可以使用unicode里面的图形显示在html上

<span>&#128571;</span> //里面是十进制
document.write('<span>&#128571;</span>')#可以在浏览器上做个测试

相等运算符

  • undefined衍生自null
  • NaN不和任何值相等,包括本身
  • 通过isNaN() 函数判断变量里面是否为NaN
  • 使用 != 做不相等
  • === 全等 用来判断两个值是否全等,不会做自动类型转换
  • !== 不全等 类似全等
var a = 10;  // 赋值运算符
console.log(a == 4); //false
console.log('4' == 4); //true
console.log(true == '1'); // true 将字符串和布尔值都转换成1
console.log(null == 0);  //false null没有转成number
console.log(null == undefined); // true

console.log(10 != 4);  // true
console.log('1' != 1); // 不相等会对变量进行自动的类型转换,如果转换后相等也会返回false

console.log(null === undefined); //false
console.log(null === undefined); // true

条件运算符

三元运算符:三个操作数

  • 条件表达式 ? 语句1:语句2;

  • 执行了流程:对表表达式进行求值,如果为true执行语句1;如果为false执行语句2

    true ? alert('hi') : alert('world'); 
    
    var a = 10;
    var b = 20;
    a > b ? alert('a>b'):alert('a<b');
    
    var max = a > b ? a : b;
    
    c = 30;
    var max = max > c ? max : c;
    
    // 一行比较 a,b,c三个变量的大小
    var max = a > b ? a > c ? a : c : b > c ? b : c;
     
    var max = a > b ? (a > c ? a : c) : (b > c ? b : c);
    

运算符的优先级

  • 使用, 可以分割多个语句,一般可以在声明前进行使用

  • var a=10,b=20,c=30;
    
  • 和数学中的一样,先乘除后加减

  • var res = 1 || 2 && 3; // 与的优先级高
    
  • 优先级表-click
    max = a > b ? a > c ? a : c : b > c ? b : c;

    var max = a > b ? (a > c ? a : c) : (b > c ? b : c);

    
    

运算符的优先级

  • 使用, 可以分割多个语句,一般可以在声明前进行使用

  • var a=10,b=20,c=30;
    
  • 和数学中的一样,先乘除后加减

  • var res = 1 || 2 && 3; // 与的优先级高
    
  • 优先级表-click

  • 在表中越往上优先级就越高,可以进行测试

猜你喜欢

转载自blog.csdn.net/qq_42992704/article/details/105026184
今日推荐