第三章 基本概念 第五节操作符

1、操作符有哪些?
2、什么是一元操作符?
3、在应用于不同值时,递增和递减应该遵循什么规则?
4、如何使用加和减操作符?
5、如何使用布尔值操作符?
6、如何使用乘法操作符?
7、如何使用加法操作符?
8、如何使用关系操作符?
9、相等和不相等可以做什么?
10、如何使用条件操作符?
11、如何理解赋值操作符?
12、逗号操作符可以做什么?

1、操作符有哪些?
    用于操作数据值的操作符,有算术操作符(如加号和减号)、位操作符、关系操作符、相等操作符。
    ECMAScript操作符适用于很多值,如: 字符串、数字值、布尔值甚至对象。

2、什么是一元操作符?
    只能操作一个值的操作符叫做一元操作符,这是最简单的操作符。
    a: 递增和递减操作符,有前置型,位于操作的变量之前,有后置型,位于操作变量之后,在使用前置递增符给一个数值加1时,要把两个加好(++)放在这个数值变量前面。如下:

    var age = 29;
    ++age;

    这个例子前置递增操作符把age的值变成了30(为29加上1),实际上与下面的效果相同。

    var age = 29;
    age = age + 1;

    执行前置递减操作的方法也类似,结果会从一个数值中减去1,把操作符减号(--)放在相应变量前面,如下 

    var age = 29;
    --age;

    这样,age变量的值就减少为28(从29中减去了1)3、在应用于不同值时,递增和递减应该遵循什么规则?
    a: 在应用有效数字字符时,先将其转换为数字值,再执行减1的操作,字符串变量变成数值变量。
    b: 在应用不包含有效数字字符串时,将变量的值设置为NaN,字符串变量变成数值变量。
    c: 在应用布尔值为false时,先转换为0再执行加减1的操作,字符串变量变成数值变量。
    d: 在应用布尔值为true时,先转换为1再执行加减1的操作,字符串变量变成数值变量。
    e: 在应用于浮点数值时,执行加减1的操作。
    f: 在应用于对象时,先调用对象的valueOf()方法,以取得可供操作的值,然后对该值应用前述规则,如果结果是NaN,则调用toString()方法后再应用前述规则;对象变量变成数值变量。
    以下实例展示上面的规则:

    var s1 = "2";
    var s2 = "z";
    var b = false;
    var f = 1.1;
    var o = {
        valueOf: function() {
            return - 1;
        }
    };

    s1++;    //值变成数值2
    s2++;    //值变成NaN
    b++;     //值变成数值0
    f--;        //值变成1.1
    o--;       //-1

4、什么是加和减操作符?
    一元加操作符以加好表示,放在数值前面,如下:

    var num = 25;
    num = +num;

    在对非一元加操作符时,该操作符会像Number()转型函数一样对这个值执行转换。
    布尔值false、true将转换为0、1
    对象先是调用它们的valueOf()或toString()方法,再转换得到的值。
    下例展示应用一元加操作符的结果:

    var s1 = "01";
    var s2 = "1.1";
    var s3 = "z";
    var b = false;
    var f = 1.1;
    var o = {
        valueOf: function(){
            return -1;
        }
    };

    s1 = +s1;     //值变成数值1
    s2 = +s2;     //值变成数值1.1
    s3 = +s3;     //值变成NaN
    b = +b;       //值变成数值0
    f = +f;        //值变成1.1
    o = +o;      //值变成-1

    一元减操作符主要用于表示负数,例如将1转换成-1。如下:

    var num = 25;
    num = -num;        //值变成了 -25

    var s1 = "01";
    var s2 = "1.1";
    var s3 = "z";
    var b = false;
    var f = 1.1;
    var o = {
        valueOf: function(){
            return -1;
        }
    };

    s1 = -s1;     //值变成数值-1
    s2 = -s2;     //值变成数值-1.1
    s3 = -s3;     //值变成NaN
    b = -b;       //值变成数值0
    f = -f;         //值变成-1.1
    o = -o;      //值变成1

跳过位操作符

5、什么是布尔值操作符?
    布尔操作符有三个:非(!false)、与(&&)、或(||)。    

    A、逻辑非操作符由一个叹号(!)表示,逻辑非操作符首先会将它的操作数转换为布尔值,然后再求反。
         逻辑非规则如下:
        a: 操作数是对象,返回false;
        b: 操作数是空字符串,返回true;
        c: 操作数是非空字符串,返回false;
        d: 操作数是数值0,返回true;
        e: 操作数是任意非0数值(包含Infinity),返回false;
        f: 操作数是null,返回true;
        g: 操作数是NaN,返回true;
        i: 操作数是undefined,返回true;

        实例:

    alert(!false);      //true
    alert(!"blue");     //false
    alert(!0);          //true    
    alert(!NaN);        //true
    alert(!"");         //true
    alert(!123456);     //false

    B、逻辑与操作属于短路挫折,即如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值,对逻辑与操作来说,如果第一个操作数是false,则无论第二个操作数是什么值,结果都不再可能是true了。
    逻辑与操作符由两个和号(&&)表示,有两个操作数:如下

    var result = true && false;

    逻辑与的真值表如下:

    第一个操作数   第二个操作数  结果
        true       true      true
        true       false     false
        false      true      false
        false      false     false

    逻辑与规则如下:
        a:第一个操作数是对象,则返回第二个操作数
        b:第二个操作数是对象,则只有在第一个操作数的求值结果为true时才返回该对象
        c:两个操作数都是对象,则返回第二个操作数
        d:有一个操作数是null,则返回null
        e:有一个操作数是NaN,则返回NaN
        f:有一个操作数是undefined,则返回undefined

        如下:

    var found = true; // 如果将found设置为false;就不会报错了
    var result = (found && someUndefinedVariable); // 报错
    alert(result); //不会执行

    C、逻辑或操作符由两个竖线符号(||)表示,如果第一个操作数的求值结果为true,就不会对第二个操作数求值了
    逻辑或有两个操作数,如下:

 var result = true || false;

    逻辑或的真值表如下:

    第一个操作数   第二个操作数  结果
      true         true      true
      true         false     true
      false        true      true
      false        false     false

    逻辑或规则如下:
    a: 第一个操作数是对象,则返回第一个操作数
    b: 第一个操作数的求值结果为false,则返回第二个操作数;
    c: 两个操作数都是对象,则返回null
    d: 两个操作数是NaN, 则返回NaN;
    e: 两个操作数是undefined,则返回undefined
    f: 两个操作数都是对象,则返回第一个操作数

    实例:

    var found = true;  //如果改为false,则报错
    var result = (found || someUndefindVariable); //不会发生错误
    alert(result);

6、如何使用乘法操作符?
    乘法操作符由一个星号(*)表示,用于计算两个数值的乘积,用于计算两个数值的乘积;如下:

    var result = 34 * 56;

7、如何使用加法操作符?
    加法和减法操作符是最简单的算术操作符,加性操作符会在后台转换不同的数据类型;如下:

    var result = 1 + 2;
    var result = 2 -1;

8、如何使用关系操作符?
    小于(<)、大于(>)、小于等于(<=)和大于等于(>=) 这几个关系操作符用于对两个值进行比较

    var result1 = 5 > 3;    //true
    var result2 = 5 < 3;    //false

9、相等和不相等可以做什么?
    能确定两个变量是否相等,可以比较字符串、数值、布尔值、对象等,需要先转换再比较。
    转换规则如下:
    a: 布尔值 false转换为0, true转换为1
    b: 一个字符串、一个数值,先将字符串转换为数值
    c: 一个对象,另一个不是,则调用对象的valueOf()方法,用得到的基本类型值比较
    d: null和undefined是相等的、比较相等性之前,不能转换为其他任何值
    e: 如果都是NaN,则相等返回false,不等返回true,两个都是NaN,相等操作符也返回false,NaN不等于NaN
    f: 如果都是对象,则比较是否是同一个对象

    特殊情况比较结果如下表:

      表达式                   值
    null == undefined        true
    "NaN" == NaN             false
    5 == NaN                 false
    NaN == NaN               false
    NaN != NaN               true
    false == 0               true
    true == 1                true
    true == 2                false
    undefined == 0           false
    null == 0                false
    "5" == 5                 true

    全等和全不等

    var result1 = ("55" == 55);        //true 因为转换后相等
    var result2 = ("55" === 55);       //false,因为不同数据类型不相等
    var result1 = ("55" != 55);        //false 因为转换后相等
    var result2 = ("55" !== 55);       //true,因为不同数据类型不相等

10、条件操作符如何使用?
    boolean_expression 是求值结果,决定给变量variable赋什么值,如果求值结果为true,则给变量variable赋true_value,如果为false,则给变量variable赋false_value值

    语法:variable = boolean_expression ? true_value : false_value;     
    实例:var max = (num1 > num2) ? num1 : num2;

11、赋值操作符如何理解?
    简单的赋值操作符由等于号(=) 表示,其作用是把右侧的值赋给左边的变量:如下

    var num = 10l;

    如果在等于号(=)前面再添加乘、加或位操作符,就可以完成复合赋值操作;
    常规表达式:

    var num = 10;
    num = num + 10;

    复合赋值表达式:

    var num = 10;
    num += 10

12、逗号操作符可以做什么?
    可以在一条语句中执行多个操作,多用于声明多个变量,也可以用于赋值
    如下:

    var num1 = 1, num2 = 2, num3 = 3;    
    var num = (5,2,4,5,6,0);  //这是由于0是表达式中的最后一项,因此num的值为0

提问式学习你将会更优秀!!GOGO加油!!

鼓励自己养成良好的学习习惯,坚持不定时更新。

转载于:https://my.oschina.net/guobao6/blog/3081667

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值