JS--运算符

运算符

  • 运算符也被称为操作符,是用于实现赋值,比较和执行算数功能的符号

算数运算符

概述

  • 算数运算符使用的符号,用于执行两个变量或值的算数运算
运算符描述实例
+1+1=2
-2-1=1
*1*2=2
/2/1=2
%取余(取模)返回除法中的余数9%2=1
++递增
递减
delete删除删除数组或对象中特定的索引值
typeof类型判断对象的类型
voidvoid运算对任何值的返回都是undefined
console.log(1 + 1); // 2
console.log(1 - 1); // 0
console.log(1 * 1); // 1
console.log(1 / 1); // 1
// 1. % 取余 (取模)  
console.log(4 % 2); // 0
console.log(5 % 3); // 2
console.log(3 % 5); // 3
+加号
  • 进行数据相加
var num1 = 3;
var num2 = 5;
var sum = num1 + num2; //8
  • 取正数
var num = 6;
console.log(+num); // 6
  • 与字符串运算时,就是字符串拼接符(字符串的隐式转换)
var a = 'hello';
var b = 'world';
console.log(a + b); // helloworld
var num=10;
var string='sintop'
console.log(num + string,typeof(num + string));//10sintop string
  • 可以将数字字符串或布尔类型等隐式转换成number类型
var a = '123';
var b = true;
console.log(+a, +b); // 123  1
-(减号)
  • 正、负可以对数字进行取正或取负,其他运算不能转换
var num1 = 6;
var num2 = -6;
console.log(-num1); //-6
console.log(+num1); //6
console.log(-num2); //6
console.log(+num2); //-6
  • 正、负号可以将字符串数字隐式转换成数字
var num1 = '20';
var num2 = '-20';
console.log(-num1); //-20
console.log(+num1, typeof +num1); //20 number
console.log(-num2); //20
console.log(+num2, typeof +num2); //-20 number
  • !(取反)
  • 经常被用作条件判断时的取反操作,类型判断等,还可以用‘!’将变量转换成Boolean类型
var a;
if (!a) {}
console.log(!null);  //true
console.log(!undefined);  //true
console.log(!''); //true
console.log(!100);  //false
console.log(!'abc');  //false
delete
  • 删除数组或对象中特定索引的值
var obj = {
  name:'zhangsan',
  age: 17
};
delete obj.name;
console.log(obj); // {age: 17}

var arr = [1,2,3,4,5];
delete arr[2];
console.log(arr); //[ 1, 2, <1 empty item>, 4, 5 ]

浮点数的精度问题

  • 浮点数的最高精度是17位小数,但在进行算数计算时其精度远远不如整数
// 2. 浮点数 算数运算里面会有问题
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.07 * 100); // 7.000000000000001

所以不要直接判断两个浮点数是否相等

var num = 0.1 + 0.2;
 console.log(num == 0.3); // false

表达式和返回值

  • 表达式:是由数字、运算符、变量等以能求得数值的有意义排列方法所得的组合
  • 简单来说:是由数字、运算符、变量组成的式子
 		 console.log(1 + 1); // 2 就是返回值
        // 1 + 1 = 2
        // 在我们程序里面  2 = 1 + 1   把我们的右边表达式计算完毕把返回值给左边
        var num = 1 + 1;
  • 表达式最终都会有一个结果,返回给我们

递增和递减运算符

  • 给数字变量进行加1或减1操作,可以使用递增(++)和递减(–)运算符完成
前置递增运算符(递减)
  • ++num前置递增,就是自加1,类似于 num = num + 1
		// 2. 前置递增运算符  ++ 写在变量的前面
        var age = 10;
        ++age; // 类似于 age = age + 1
        console.log(age);//11
  • 使用口诀:先自加,后返回值
		//先自加1,后返回值
		var p = 10;
        console.log(++p + 10);//21
后置递增运算符(递减)
  • num++ 后置递增,就是自加1,类似于num=num+1
		 var num = 10;
        num++; // num = num + 1    ++num;
        console.log(num);
  • 使用口诀:先返回值,后自加
		var age = 10;
        console.log(age++ + 10);//20
        console.log(age);//11

小结

注意:

  • 前置递增和后置递增运算符可以简化代码的编写,让变量的值 +1 比以前写法更简单
  • 单独使用时,运算结果相同
  • 与其他代码联用时,运行结果会不同
  • 后置:先原值运算,后自加
  • 前置:先自加,后运算
  • 开发时,大多使用后置递增/减,并且代码独占一行,例如:num++;或者num–;
 var a = 10;
        ++a; // ++a  11    a = 11
        var b = ++a + 2; // a = 12   ++a = 12
        console.log(b); // 14

        var c = 10;
        c++; // c++ 11  c = 11
        var d = c++ + 2; //  c++  = 11     c = 12
        console.log(d); // 13

        var e = 10;
        var f = e++ + ++e; // 1. e++ =  10  e = 11  2. e = 12  ++e = 12
        console.log(f); // 22
        // 后置自增  先表达式返回原值 后面变量再自加1

比较运算符

概述

  • 比较运算符(关系运算法)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true/false)作为比较的运算的结果
运算符名称说明案例结果
<小于号1<2true
>大于号1>2false
>=大于等于号2>=2true
<=小于等于号3<=2false
==判等号(会转型)37==37false
!=不等号37!=37false
===全等号(值和类型都一致)37 === '37false
 		console.log(3 >= 5); // false
        console.log(2 <= 4); // true
        //1. 我们程序里面的等于符号 是 ==  默认转换数据类型 会把字符串型的数据转换为数字型 只要求值相等就可以
        console.log(3 == 5); // false
        console.log('张学友' == '刘德华'); // flase
        console.log(18 == 18); // true
        console.log(18 == '18'); // true
        console.log(18 != 18); // false
        // 2. 我们程序里面有全等 一模一样  要求 两侧的值 还有 数据类型完全一致才可以 true
        console.log(18 === 18);//true
        console.log(18 === '18'); // false

= 小结

符号作用用法
=赋值把右边的给左边
==判断判断两边的值是否相等(此时有隐式转换)
===全等判断两边的值和类型是否完全相等
var num1 = 10;
var num2 = 100;
var res1;
console.log(res1 = num1 > num2 );  //false
var res2;  
console.log(res2=num1==11);//false
var res3; 
console.log(res3 = num1 != num2);///true

逻辑运算符

概述

  • 逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值,后面开发中经常用于多个条件的判断
逻辑运算符说明案例
&&“逻辑与”,简称 “与” andtrue&&false
!"逻辑非“,简称”非“ not!true

逻辑与 &&

  • 两边都是true才返回true 否则返回false
 		console.log(3 > 5 && 3 > 2); // false
        console.log(3 < 5 && 3 > 2); // true

逻辑或 ||

  • 两边都为false才返回 false,否则都是true
		 console.log(3 > 5 || 3 > 2); // true 
        console.log(3 > 5 || 3 < 2); // false

逻辑非 not !

  • 逻辑非(!)也叫做取反符,用来取一个布尔值相反的值,如true的相反值是false
console.log(!true); // false

短路运算(逻辑中断)

  • 短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值:
1、逻辑与
  • 语法:表达式1 && 表达式2
  • 如果第一个表达式的值为真,则返回表达式2
  • 如果第一个表达式值为假,返回表达式1
		console.log(123 && 456); // 456
        console.log(0 && 456); //  0
        console.log(0 && 1 + 2 && 456 * 56789); // 0
        console.log('' && 1 + 2 && 456 * 56789); // ''
2、逻辑或
  • 语法:表达式1 || 表达式2
  • 如果第一个表达式的值为真,则返回表达式1
  • 如果第一个的表达式为假,则返回表达式2
		console.log(123 || 456); // 123
        console.log(123 || 456 || 456 + 123); // 123
        console.log(0 || 456 || 456 + 123); // 456
3、逻辑中断
		var num = 0;
        console.log(123 || num++);//123
        console.log(num); // 0 (!!!)

赋值运算符

  • 用来把数据赋值给变量的运算符
赋值运算符说明
=直接赋值
+=、-=加、减一个数后再赋值
*=、/=、%=乘、除、取余后在赋值
  		 var num = 10;
        // num = num + 1;   num++
        // num = num + 2; // num += 2;
        // num += 2;
        num += 5;
        console.log(num);//15
        var age = 2;
        age *= 3;

运算符优先级

优先级运算符顺序
1小括号()
2一元运算符++ – !
3算数运算符先* / 后 + -
4关系运算符> >= < <=
5相等运算符== != === !==
6逻辑运算符先&&后
7赋值运算符=
8逗号运算符
      //  ++num   !num     2 + 3
        console.log(4 >= 6 || '人' != '阿凡达' && !(12 * 2 == 144) && true)//true
        var num = 10;
        console.log(5 == num / 2 && (2 + 2 * num).toString() === '22');//true
        console.log('-------------------');
        var a = 3 > 5 && 2 < 7 && 3 == 4;
        console.log(a);//false

        var b = 3 <= 4 || 3 > 1 || 3 != 2;
        console.log(b);//true

        var c = 2 === "2";
        console.log(c);//false

        var d = !c || b && a;
        console.log(d);//true

类型转换

* => 字符串

  • toString 函数
var a = true;
var b = 123;
console.log(a.toString(), b.toString());// 'true'  '123'
console.log(typeof a.toString(), typeof b.toString());//string string
  • 通过传递参数,可将十进制数字转化成二、八、十六进制的数字字符串
var num = 10;
console.log(num.toString());  //"10"
console.log(num.toString(2))	//"1010"
console.log(num.toString(8))	//"12"
console.log(num.toString(16))	//"a"
  • 通过 + 来隐式转化成字符串
console.log(typeof (true + ''));  //string

* => 布尔类型

  • Boolean()包装器
Boolean('hello') //true
  • 使用!!转换任意其他数据类型变成布尔类型
console.log(!!'hello');//true

* => 数字类型

  • Number() 包装器
Number(true); //1
Number(false); //0
Number(null); //0
Number(undefined); //NaN
Number(10); //10 如果是数字值,原样输出
Number("123"); //123  如果仅包含数值,转换为对应的数值
Number("234.1"); //234.1 解析为对应的小数 
Number("+12.1"); //12.1 首位为符号位,其余为为数值,转换为对应的数值 
Number("1+2.3"); // NaN 符号位出现在其他位置,解析为NaN 
Number("0xa"); //10 如果仅包含十六进制格式,转为为对应的十进制的值
Number("010"); //10【注意】不会当做八进制被解析,结果为10。 
Number(""); // 0 空字符串被转换为0 
Number("123ac"); // NaN 包含其他字符: NaN 
Number(12); //12
  • parseInt()函数

将数字转换成整数

parseInt(10); //10 如果是整数值,原样输出 parseInt(10.3); //10 如果是小数,舍去小数点一级后面的内容
parseInt("123"); //123;如果仅包含数值,转换为对应的数值
parseInt("234.1"); //234;小数点后面的数值省略 
parseInt("+12.1"); //12; 首位为符号位,其余为为数值,转换为整数 
parseInt("1+2.7"); //1; 符号位出现在其他位置,保留符号位前面的数值 
parseInt("0xa"); //10; 如果仅包含十六进制格式,转为为对应的十进制的值
parseInt("010"); //10; 【注意】不会当做八进制被解析,结果为10
parseInt(""); //NaN;空字符串被转换为NaN
parseInt("123ac"); //123;如果首位为数值,依次向后解析,找到连续的数值,直到遇到第一个非数值的,将之前获取的数值转换为Number返回 parseInt("123ac"); //123;
  • parseFloat() 函数

将数字转化成浮点数

parseFloat(10); //10 如果是整数值,原样输出 parseFloat(10.1); //10.1 如果是小数,保留小数点,但是如果是10.0结果为10
parseFloat("123"); //123;如果仅包含数值,转换为对应的数值
parseFloat("234.1"); //234.1;保留小数点后面的数值 
parseFloat("+12.1"); //12.1; 首位为符号位,其余为为数值,转换为整数 
parseFloat("1+2.6"); //1;符号位出现在其他位置,保留符号位前的数值 
parseFloat("0xa"); //0; 【注意】不会当做十六进制来解析。
parseFloat("010"); //10; 【注意】不会当做八进制被解析,结果为10
parseFloat(""); //NaN;空字符串被转换为NaN
parseFloat("123.3ac"); //123.3;如果首位为数值,依次向后解析,找到连续的数值,直到遇到第一个非数值的,将之前获取的数值转换为Number返回 parseFloat("123.3ac");//123.3;
  • +加号
+"23"                    //23
+null                    //0
+undefined               //NaN

流程控制

在这里插入图片描述

顺序流程控制

  • 程序会按照代码的先后顺序,依次执行
    在这里插入图片描述

分支流程控制 if语句

  • 由上到下,根据不同的条件选择不同的路径代码
    在这里插入图片描述
if语句
  • 语法解构
//条件成立执行代码,否则什么也不做
if(条件表达式) {
	//条件成立执行的代码语句
}
  • 执行流程

在这里插入图片描述- 案例:进入网吧

  <script>
        //         弹出 prompt 输入框,用户输入年龄, 程序把这个值取过来保存到变量中
        // 使用 if 语句来判断年龄,如果年龄大于18 就执行 if 大括号里面的输出语句
        var age = prompt('请输入您的年龄:');
        if (age >= 18) {
            alert('我想带你去网吧偷耳机');
        }
    </script>
if-else语句(双分支语句)
  • 代码结构
  // 1. 语法结构  if 如果  else 否则  条件表达式为真 执行语句1 否则 执行语句2
        if (条件表达式) {
            // 执行语句1
        } else {
            // 执行语句2 
        }
  • 执行流程

在这里插入图片描述- 案例:判断闰年

  	//         算法:能被4整除且不能整除100的为闰年(如2004年就是闰年,1901年不是闰年)或者能够被 400 整除的就是闰年
        // 弹出prompt 输入框,让用户输入年份,把这个值取过来保存到变量中
        // 使用 if 语句来判断是否是闰年,如果是闰年,就执行 if 大括号里面的输出语句,否则就执行 else里面的输出语句
        // 一定要注意里面的且 &&  还有或者 || 的写法,同时注意判断整除的方法是取余为 0
        var year = prompt('请您输入年份:');
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            alert('您输入的年份是闰年');
        } else {
            alert('您输入的年份是平年');
        }
if-else-if(多分支语句)
  • 语法结构
if (条件表达式1) {
            // 语句1;
        } else if (条件表达式2) {
            // 语句2;
        } else if (条件表达式3) {
            // 语句3;
        } else {
            // 最后的语句;
        }
  • 执行流程

在这里插入图片描述

  • 案例:判断成绩
 <script>
        //  伪代码       按照从大到小判断的思路
        // 弹出prompt输入框,让用户输入分数(score),把这个值取过来保存到变量中
        // 使用多分支 if else if 语句来分别判断输出不同的值
        var score = prompt('请您输入分数:');
        if (score >= 90) {
            alert('宝贝,你是我的骄傲');
        } else if (score >= 80) {
            alert('宝贝,你已经很出色了');
        } else if (score >= 70) {
            alert('你要继续加油喽');
        } else if (score >= 60) {
            alert('孩子,你很危险');
        } else {
            alert('熊孩子,我不想和你说话,我只想用鞭子和你说话');
        }
    </script>

-注意点:

      (1) 多分支语句还是多选1 最后只能有一个语句执行
      (2) else if 里面的条件理论上是可以任意多个的
      (3) else if 中间有个空格

分支流程控制 switch 语句

  • 语法结构
  switch (表达式) {
            case value1:
                执行语句1;
                break;
            case value2:
                执行语句2;
                break;
                ...
                default:
                    执行最后的语句;
        }
  • 语法结构说明:
1、关键字switch后面小括号可以是表达式或值,通常是一个变量
2、关键字case,后跟一个选项的表达式的值,后面是一个冒号
3、switch表达式的值会与结构中case的值做比较
4、如果存在匹配全等(===),则于=与该case关联的代码会被执行,并在遇到break时停止,真个switch语句代码执行结束
5、如果所有的case的值都和表达式的值不匹配,则执行default的代码

注意:执行case里面的语句时,如果没有break,则继续执行下一个case里面的语句

  • 案例:查询水果
  <script>
        //         弹出 prompt 输入框,让用户输入水果名称,把这个值取过来保存到变量中。
        // 将这个变量作为 switch 括号里面的表达式。
        // case 后面的值写几个不同的水果名称,注意一定要加引号 ,因为必须是全等匹配。
        // 弹出不同价格即可。同样注意每个 case 之后加上 break ,以便退出 switch 语句。
        // 将 default 设置为没有此水果。
        var fruit = prompt('请您输入查询的水果:');
        switch (fruit) {
            case '苹果':
                alert('苹果的价格是 3.5/斤');
                break;
            case '榴莲':
                alert('榴莲的价格是 35/斤');
                break;
            default:
                alert('没有此水果');
        }
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值