javaScript中的运算符 if 分支语句 while循环

111 阅读3分钟

1.javaScript中的运算符

运算符也叫操作符比如:typeof就是运算符,来获取一个值的类型,它会将该值的类型以字符串的形式返回

1.算术运算符(+、-、*、/、%)

任何值和NaN做运算,都是NaN 如果两个String相加,则产生拼串操作。与java中的字符串相加相同。js中的双引号必须在同一行,不能换行 任何的值和字符串做加法运算,都会先转换为字符串,再拼串 任何值进行-,/,*操作时,都会自动转换为Number

2.一元运算符

            + 正号
            - 负号
            对于非Number的值,会先转换为Number后,进行处理
            
            语法:++/--变量名++/--留心:++/--在前 先运算,在操作、++/--在后 先操作,再运算

3.逻辑运算符

  ! 非
                -如果对非布尔值进行运算,会将其转换为布尔值。
                可以将任意数据类型取两次反,将其转换为布尔值。
                
            && 短路与
                -非布尔值的情况:
                        对于非布尔值会先将其转换为布尔值,再运算,最后返回原值。
                        
            || 短路或

4.关系运算符

            对于非数值进行比较时,会将其转换为数字,再比较。
            任何值与NaN做比较都是false。
       注意:
            如果负号两侧的值都是字符串时,不会将其转换为数字进行比较,而是转换成Unicode编码(十六进制)比较。
            按位比较。

            在比较两个字符串型的数字时,一定要转型。
            
    //  大于小于

let result = 5 > 10;
let result = 5 < 10;

// 大于等于,小于等于
let result = 5 >= 10;//<=

// 非数字
// 对非数值进行比较,先转换为数字,再比较
let result = '10' > 2;
let result = 10 > 'hello' // 任何值和NaN都是false

// 如果两边都是字符串,不会将其转换成数字,而是分别比较字符的unicode
console.log('1' < '5');
console.log('22' < '5');

// 比较字符编码
console.log('a' < 'b');

// 0061.   0041
console.log('a' < 'A');  // false

// 比较字符编码时候,是一位一位进行比较,如果两位一样,则比较下一位。
console.log('abc' < 'b');
console.log('bbc' > 'b');

// 可以比较英文名字,中文不行。

// 值得注意的是:
// 比较俩个字符串型的数字时候,会出现错误:
console.log('1231231' < '3');

// 所以,一定要转型
console.log('12313' > +'3');

5.相等运算符

            ==
                如果使用==来比较两个值时,如果值的类型不同,
                则会自动进行类型转换,将其转换为相同的类型。

                undefined衍生自null,所以两个值做相等判断时,会返回true。

                NaN不和任何值相等,包括其本身。
                    -判断值是否是NaN,通过isNaN()函数来判断一个值是否是NaN。

            !=

            === 全等
                -用来判断两个值是否全等,和相等类似,不同的是如果两个值的类型不同,直接返回false。

            !== 不全等
                -用来判断两个值是否不全等,如果两个值的类型不同,直接返回true。
                
                // == 与  ===  与   !=
console.log( 1 == 1);

console.log( '1' == 1);

// == 自动类型转换,再比较
console.log( true == '1' );

//  字符串转成了数字
console.log(true == '1');
console.log(true == '2');

console.log( true == 'hello');

console.log( null == 0);    // false null=>空,准确来说不为0

console.log(undefined == null); // undefined衍生自null

// NaN 不和任何值相等,包括其本身
console.log( NaN == 1 );
console.log( NaN == NaN );

console.log(isNaN(NaN));


// != 不相等,与==类似
// === 不进行类型转换,再比较,全等,其他和==类似
console.log(undefined === null); //fasle  相等但不全等

6.赋值运算符(=、+=、-=、*=、/=)

明确:在js中一个等号是赋值
举例:var 变量名 = 值    // 将 = 右边的数据  放到  左边的  变量中/仓库中

留心:下述语法 只能修改
接着:+=、-=、*=、/=
就是:仓库里面的数据  自己数据+新数据、自己数据-新数据、自己数据*新数据.....
代码:变量名 += 值
演变:变量名 = 变量名 + 值
代码:变量名 *= 值
演变:变量名 = 变量名 * 值

<script>
// var temp = 1;
// temp += 6; // temp = temp + 6
// console.log(temp) // 7

var temp = 2
temp*=5           // temp = temp * 5
console.log(temp) // 10

// var rs += 5   // 留心:报错因为rs没有定义
// 演变  var rs = rs + 5
// 因为 没有rs 所以报错
</script>

7.比较运算符(>、<、>=、<=、、!=、=、!==)

语法

明确:比较肯定有两个值,然后布尔值  成立-true,不成立-false

>   大于
<   小于
>=  大于等于(只有有一个成立 就返回true
<=  小于等于(只要有一个成立 就返回true

=    赋值		
==   判断值是否相当			
===  全等(既判断值又判断类型     既要值相等、又要类型相等 成立 true  否则返回false

!=   不等						只要值不相等就成立 true 
!==  不全等(有判断值有判断类型  只要有一个成立 就成立 true

2.分支

if 分支语句

if 语句有三种使用方法:单分支、双分支、多分支

1单分支:

<script>
    if(条件){
    满足条件时执行的代码
    }
</script>

括号内的条件为true时 执行大括号里面的代码

小括号里面的条件若不是boolean类型时 会发生隐式装换转换为boolean类型

2双分支:

    <script>
    if(条件){
    满足条件时执行的代码
    } else {
     不满足条件时执行的代码
    }
    </script>

3多分支:

    <script>
    if(条件1){
    代码1
    } else if(条件2) {
     代码2
    }else if(条件3) {
     代码3
    }else{
     代码n
    }
    </script>

先判断条件1,若满足条件1就执行代码1,其他不执行

若不满足则向下判断条件2,满足条件2执行代码2,其他不执行

若依然不满足继续往下判断,依次类推

若以上条件都不满足,执行else里的代码n

可以写N个条件

4三元运算

语法

  • 三元运算:顾名思义就是有三个操作组成(注:两个符号)

  • 语法:操作1 ? 操作2 : 操作3

  • 留心:操作1成立-操作2,操作1不成立-操作3

3.while循环

switch语句

需要括号里面的内容 和 值1 全等(===)

若没有全等的则执行 default 里面的代码

switch case语句一般用于等值判断,不适合于区间判断 switch case一般需要配合break关键字使用 没有break会造成case穿透

    <script>
    switch(数据){
   case1:
    代码1
     break
 case2:
    代码2
     break
    default:
    代码n
    break
    }
    </script