JavaScript 运算符

1. 一元运算符

所谓的一元运算符是指:只一个运算数的运算符;一元运算符包含:

一元运算符描述
++自增运算
--自减运算
+                        正号运算                                                                        
-负号运算

注意事项:

a++ 先赋值,再计算(返回自增前的数)

++a 先计算,后赋值(返回自增后的数)

	// 自增案例
	var a = 10;
	var b = ++a - 1 + a++;         // 输出:11-1 + 11 = 21 
	document.write(b + " " + a);   // 输出:12 


	// 自减案例
	var c = 1;
	var d = c-- + --c;
	document.write(d);             // 输出:0

2. 赋值运算符

赋值运算符分:

  • 基本赋值运算符:就是一个等号=,代表将右侧的数据效给左侧的变量进行存储。

  • 复合赋值运算符:【+=加等】【-=减等】【*=乘等】【/=除等】【%=取棤等】。

赋值运算符如下:

运算符含义例子等同于
=等于号x = yx = y
+=加等于x += yx = x + y
-=减等于x -= yx = x - y
*=乘等于x *= y x = x * y
/=        除等于x /= yx = x / y
%=取模等x %= yx = x % y

如下基本案例:

        var x = 3;
        var y = 4;
        document.write((x += y)  + "<br>");   // 输出:7
        
        var x = 3;
        var y = 4;
        document.write((x -= y)  + "<br>");  // 输出: -1

        var x = 3;
        var y = 4;    
        document.write((x *= y)  + "<br>");  // 输出: 12

        var x = 3;
        var y = 4;
        document.write((x /= y)  + "<br>");  // 输出:0.75

        // 输出:3,原因如下:
        // 数学原理:3 ÷ 4 = 0(商),余数为 3(因为 3 < 4,不够除)
        // 当被除数(3)小于除数(4)时,余数就是被除数本身(3)
        var x = 3;
        var y = 4;
        document.write((x %= y));  

3. 算数运算符

运算符描述
+加法运算
减法运算
*乘法运算
/除法运算
%取模运算(两个数字相除得出的余数)

        var a = 3;
        var b = 4;
        document.write(a+b + "<br>");   // 输出:7
        document.write(a-b + "<br>");   // 输出:-1
        document.write(a*b + "<br>");   // 输出:12
        document.write(a/b + "<br>");   // 输出:0.75
        document.write(a%b + "<br>");   // 输出:3

4. 比较运算符

比较运算符在逻辑语句中使用,以判定变量或值是否相等

我们给定 x = 5,下表中解释了比较运算符:

运算符含义例子返回值
==等于x ==8  x == 5 x == "5"false true true
===等值等型(即值相等并且类型相等)x === 5   x === "5"true false
!=不相等x != 8true
!==不等值或不等型 ( 即值不相等或类型不相等 )x !==5   x !=="5"   x !== 8false true true
大于x > 8false
小于x < 8true
>=大于等于x >= 8false
<=小于等于x <=8true

比较不同的类型:

比较不同类型的数据也许会出现不可预料的结果。

如果将字符串与数字进行比较,那么在做比较时 JavaScript 会把字符串转换为数值,空字符串将被转换为 0,非数值字符串将被转换为始终为 false 的 NaN。

案例
2 < 12true
2 < "12"true
2 < "Bill"false
2 > "Bill"false
2 == "Bill"false
"2" < "12"false
"2" > "12"true
"2" == "12"false

注:当比较两个字符串时,”2”是大于”12”的,因为字母排序1小于2;

5. 逻辑运算符

5.1 介绍

逻辑运算符用于判定变量或值之间的逻辑。其分成三类:

运算符含义例子 (假如x=5, y=3)返回值
&&(x < 10 && y > 1)true
||( x == 5 || y ==5 ) true
!非(否)! ( x == y )true 

5.2 与运算符

与运算符的规则:

  • 即便只有一个数字,均表示合法的表达式。如 : var a = 1 && 2

  • 被认定为 false 的值 :undefinednullNaN""0false,除此之外为 true 。

  • 如果只有两个表达式:先看第一个表达式转换成布尔值的结果是否为真:
    - 如为真,则直接返回第二个表达式转换成布尔值的结果
    - 如为假,则返回 false ( 但这些本身认定为 false 的值,则是返回其本身)

  • 如有多个表达式,也是从同样的规则(第一个为真,看第二个;第二个为真,看第三个;如果某个表达式为假那不再往后看);

  • 总结:所有表达式为真时,才为真。

基本案例如下:

	// 案例:
	var a = 1 && 2            // 输出:2
	var b = 1 && 2 +2         // 输出:4
	var c = 2>5 && 2          // 输出:false
	var d = 0 && 2            // 输出:0
	var e = undefined && 2    // 输出:underfined
	var f = 1 && 0            // 输出:0
	document.write(a);
	document.write(b);
	document.write(c);
	document.write(d);
	document.write(e);
	document.write(f);

特殊用法 - 短路语句:

任何表达式(包含与运算符的表达式)都可以是:数字、数字运算、函数、输出语句等等..

与运算符可以当作 "短路语句" 来使用。所谓的短路语句就是"如果.. 那么"。即我只关心它能不能执行第二个表达式,如果它能执行第二就执行,如果它不能执行第二个就不执行。比如以下案例:如果 2 > 1 就输出语句,否则不执行:

2>1 && document.write('Hello World!');

以上短路语句的用法就是:我不关心返回值,我只关心执行顺序。

5.3 或运算符

与运算符的规则:

  • 即便只有一个数字,均表示合法的表达式。如 : var a = 1 || 2

  • 被认定为 false 的值 :undefinednullNaN""0false,除此之外为 true 。

  • 如果只有两个表达式:先看第一个表达式转换成布尔值的结果是否为真:
    - 如为真,则直接返回该表达式转换成布尔值的结果
    - 如为假,则直接返回第二个表达式转换成布尔值的结果

  • 如有多个表达式,也是从同样的规则(第一个为假,看第二个;第二个为假,看第三个;如果某个表达式为真那不再往后看);

  • 总结:有一个表达式为真时,则为真。

	var num1 = 2 || 3;
	document.write(num1);        // 输出:2

	var num2 = 0 || 3;
	document.write(num2)         // 输出: 3

	var num3 = 0 || false;       // 输出:false
	document.write(num3);

	var num4 = 0 || undefined;   // 输出:underfined
	document.write(num4);

	var num5 = 0 || false || 1;  // 输出:1
	document.write(num5);

5.4 非运算符

非运算符的规则:

  • 基本概念:把表达式转换成布尔值,再取反。

  • 可以连续写两个非运算符,含义就是:把表达式转换成布尔值,然后取反,再取反。

	var  a  = !123;    // 123转成布尔为:true, 再取反就为:false. 输出:false
	document.write(a);

	var b = !"";        // ""空串被认为:false, 再取反就为: true. 输出:true 
	document.write(b);

	var c = !!"";
	document.write(c); // ""空串被认为:false, 再取反就为: true,再返回为:false 输出:false

其它数据类型转Boolean数据类型:

我们说:“如果给定的数据类型不是一个Boolean数据类型(如: !num),那么会自动地将运算数进行数据类型转换”。下面我们演示一下:

document.write("num的数据类型为: " +typeof(num) + "<br>");       // 输出:number
document.write(!num + "<br>");                                   // 输出:true

如上解释,

  • 我们规定变量num的数据类型为Boolean(即” ! ”只会产生Boolean值),但给定的数据类型并不是一个Boolean数据类型(即num=0),那么js引擎会自动地将运算数进行数据类型转换,转成boolean数据类型;

  • 那么根据数据类型转换的规则:

  • 如果是number数据类型转成Boolean数据类型:则0或NaN为false,其它为true;

  • 如果是String数据类型转成Boolean数据类型:则除了空字符串,其它都是true;

  • 如果是null & underfined数据类型转成Boolean数据类型:则都为false;

  • 如果是对象数据类型转成Boolean数据类型:则所有对象都为true;

有关其它数据类型转Boolean数据类型的案例,请转到【数据类型转换】一节中查阅。

6. 逗号运算符

逗号运算符的优先级非常低,仅高于赋值运算符,所以通常需要用括号包裹以确保正确的运算顺序。

JavaScript中的逗号运算符(,)是一个特殊的运算符,它有以下特点:

  • 语法形式:表达式1表达式2表达式n...

  • 运算规则:从左到右依次计算每个表达式,返回最后一个表达式的值

  • 常见用途:
    - 在for循环中同时更新多个变量
    - 在一条语句中执行多个操作
    - 简化某些需要返回多个值的场景

    // 逗号运算符案例:
    var num = (1,2);
    console.log(num);
    /* 
    解释:
    1.逗号运算符,逗号运算符的运算结果是逗号运算符右边的值。
    2.逗号运算符,逗号运算符的运算顺序是从左到右。
    3.逗号运算符,要运算得用括号包起来。
    */

    // 运算符案例:
    var f = (
        function f(){
            return "1";
        },
        function g(){
            return 2;
        }

    )();
    document.write(typeof f);
    /* 解题:
        - 本题考察逗号运算符
        - 逗号运算符: 运算规则:从左到右依次计算每个表达式,返回最后一个表达式的值
        - typeof返回六种类型:Number,String,Boolean,Object,Undefined,Function
        - 本题是一个立即执行函数“(funf,fung)(执行符号)”, 因此程序执行后会直接运行该函数
    */

7. 三目运算符

三目运算符可以说是 if 语句的简化版。它比 if 语句更好玩的一点是:它会自动返回 "是" 与 "否" 表达式的结果,而 if 语句则需要自己手动 return。以下为三目运算符的语法:

条件判断 ? 是 :否

    // 案例:
    var num = 1 > 0 ? ("10" > 9 ? 1 : 0) : 2;
    console.log(num);
    /* 解题:
        - 输出:0
        - 这题嵌套了两个三目运算符
        - 有时候表达式如果太长,为避免错误或逻辑错乱,可以使用括号把表达式括起来
    */

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值