JavaScript程序设计知识点【ES JavaScript】(G2)

159 阅读2分钟

1.运算符

常规分类

 一元运算符 typeof  ++  --   ! 
 二元运算符  + - * / %  ==  >= <= != > <  ||  && 
 三元运算符   ?:

按作用分类

算术运算符  + - * / % 
逻辑运算符  && || ! 
比较运算符(关系) > < ==  ===  >=     
赋值运算符  =  += -=  *=
位运算符  >> << ~   

number 类型的数值运算

    var num1 = 1;
    var num2 = 2;
    var num3 = num1 + num2;
    console.log(num3);
    var num4 = 15;
    console.log(num4 % num2);

+ 除了运算数之外 还可以运算字符串 字符串会进行拼接

    var str1 = "He";
    var str2 = "llo";
    console.log(str1 + str2);

比较运算符

运算完之后 返回的结果是一个boolean类型

    var num5 = 5;
    var num6 = 6;
    console.log(num6 > num5);
    var num7 = 7;
    //   错误写法
    //   console.log(num7>num6>num5);
    // 正确写法
    console.log(num7 > num6 && num7 > num5);

赋值运算符

简写格式+= -= /= *=

    var sum=0;
    sum+=2; // sum = sum+2;

自加 自减 ++ --

     var num = 10;
    console.log(num++); // 先赋值 然后再自加 
    console.log(num);
    console.log(++num);// 先自加 然后再赋值

2.三元运算符:

条件?条件成立执行:条件不成立执行

赋值

    var num = 7>3?7:3;
    console.log(num);

执行语句

    var b1= true?console.log(true):console.log(false);
    console.log(b1);

prompt()获取用户输入

    var num1 = prompt("请输入一个数字")*1; // 01 10 
    
    num1>10?alert(num1):alert("0"+num1);
    
    if(num1>10){
        alert(num1);
    }else{
       alert("0"+num1);
    }

三元运算 嵌套使用

     var res=7>3?8>4?8:4:3;
     console.log(res);

3.运算符优先级:

先 乘除 后加减

    var sum = 10 + 7 * 3 + 10;
    console.log(sum);

先 && 后 ||

     var res = 7 > 10 && 7 > 3 || 10 > 5 && 3 > 2;
     console.log(res);

当我们无法 准确知道 优先级时 可以使用 () 进行辅助

运算符优先级口诀(必记)

   括号成员最高级 ()
   全体单目排第二 ++  -- !
   乘除余三,加减四  * / % 第三  + - 第四
   移位五,关系六  >>> <<< 移位    > < >= <=  关系
   等于不等于排第七 == != === !==
   逻辑八,赋值九  && || 七   = += -=
   逗号成员最低级 ,
   级别相同时候顺序优先

思考

怎么计算: 'aa' + 1 + 1 - 2 && 1 - 2 > 3 || 'aa' + 2 > 3 || (!2) && 1++?

计算过程如下:
       'aa'+1+1-2&&1-2>3||'aa'+2>3||(!true)&&1++   // 2 --- bool
       'aa'+1+1-2&&1-2>3||'aa'+2>3||false&&1++    // !2
       'aa'+1+1-2&&1-2>3||'aa'+2>3||false&&2      // 1++
       'aa1'+1-2&&1-2>3||'aa'+2>3||false&&2      // 'aa'+1
       'aa11'-2&&1-2>3||'aa'+2>3||false&&2      // 'aa1'+1
       'aa11'-2&&1-2>3||'aa2'>3||false&&2      // 'aa'+2
        NaN-2&&1-2>3||'aa2'>3||false&&2      //'aa11'-2
        NaN &&1-2>3||'aa2'>3||false&&2      // NaN-2
        NaN && -1 >3||'aa2'>3||false&&2      // 1-2
        false

最终结果是:false;

上题的解析小步骤:

       'aa'+1+1
       // 'aa1'+1
       // 'aa11'

       'aa'+1+3-2
       // 'aa'+1+1
       // 'aa11'
       'aa'+1+3-2
       // 'aa13'-2
       // NaN - 2
       // NaN

       [1,2,3] - 1
       // [1,2,3] ---> '1,2,3' -1
       // '1,2,3'---->NaN -1
       [2]-1
       // '2' -1
       // 2 -1
       // 1

数组对象的运算;

隐式转化为 string转化其他类型运算

相当于触发 toString

      var a = {
         a:"123"
     }
     a+12;
     
     // a --->'[object Object]' + 12
     // 12---> '[object Object]' + '12'
     //"[object Object]12"

隐式转化:

1: 其他类型转number

bool undefined null string arrary object

    true 1 
    false 0 
    undefined NaN 
    null 0

arrary object --> string --> number

除了纯数字字符 其他一律NaN

2: 其他类型转字符串

 直接加引号''

3: 其他类型转boolean

false : false 0 undefined null NaN ''

其他都是true

(运算符很重要,要记住哦!!!)