【面向JS--运算符】

来源:互联网 发布:iphone伪装mac地址 编辑:程序博客网 时间:2024/05/22 03:17

什么是运算符?什么是表达式?

运算符:指定数据运算方式的符号,+,-,*,/...表达式:由运算符和操作数所组成的式子,叫表达式    ex:         1、a+b        2、a=5;        3、var result = 35+7 * 2 / 3    注意:每一个表达式,都有自己的运算结果

运算符详解

1、算术运算符

+,-,*,/,%,++,–……

注意:1、除加法外,剩下的算术运算符如果两边的操作数,不是number类型,会隐式通过Number()进行转换,转换成功则正常运算,否则,结果为NaN

% : 取余(数),俗称”模”

5 % 3 : 结果:25 % 2 : 结果:12 % 5 : 结果:210 % 3 : 结果:110.5 % 3 : 结果:1.5-10 % 3 : 结果:-1-10 % -3 : 结果:-1使用场合:1、判断数字是否为n的倍数    ex:        1、判断 num 是否为 偶数            判断 num % 2 的结果是否为 0        2、判断 num 是否为 n 的倍数            判断 num % n 的结果是否为 02、获取 某数字的 最后几位    ex:        1、想获取 1234 的最后一位            1234 % 10 结果为:4        2、想获取 1234 的最后两位            1234 % 100 结果为:34

++:自增运算符,在自身数值上只做+1操作

var num = 5;num++; ==> num = num + 1num++ : ++做后缀,先使用变量的值,然后再进行自增++num : ++做前缀,先对变量进行自增,然后再使用变量的值

- -:自减运算符,在自身数值基础上只做-1操作

var num = 10;var j = num--;console.log(num);//10,9console.log(j);//10

2、关系运算符

比较数据大小或相等 等一系列的关系

>,<,>=,<=,==(判断等于),!=(不等于),===(全等),!==(不全等)

==:    判断 表达式两边数值是否相等,是的话结果为true,否则就是false===:    判断 数值以及数据类型 都相同的情况下,结果认为是true,否则就是false!==:    数值以及数据类型,只要有一个不相同,就认为是不等(true),否则就是false

关系表达式的运算结果均为 boolean 类型

var n1 = 15;var n2 = 51;n1>n2 : falsen1<n2 : truen1>=n2 : falsen1<=n2 : truen1==n2 : falsen1!=n2 : true

注意:
1、运算符两端的操作数,有一个是number类型,一个是非number类型的话,会将非number类型的数据转换为number类型进行比较(通过Number()进行转换)。如果转换失败(NaN),结果为 false
2、运算符两端的操作数如果都是string类型的话,那么就将两个数据每位字符的Unicode码进行比较。Unicode码大的数据为大。
3、任何数据与NaN进行比较,结果永远是false,想判断数据是否为NaN的话,要使用isNaN()

ex:"张三丰">"张无忌" //false张:24352  三:19977 无:2608019977 < 26080 ⇒ "张三丰"<"张无忌"    "33" < "5" //true    "3":51  "5":53    51 < 53 ⇒ "33" < "5"

3、逻辑运算符

主要用于关联多个条件,或对条件做取反操作

!(逻辑非),&&(逻辑与),||(逻辑或)

逻辑与 : &&

关联两个条件如果两个条件的结果都为真的话,逻辑与的表达式的结果 就为真,否则为false

逻辑或 : ||

关联两个条件如果两个条件,只要有一个为真,那么这个逻辑或的表达式的结果就为真。

逻辑非 : !

非真即假非假即真

短路逻辑:

1、对于 &&,短路与

如果第一个条件的结果为真,则继续判断第二个条件(表达式),最后将第二个条件(表达式)的结果作为整个逻辑表达式的结果如果第一个条件的结果为假,则不会继续判断第二个条件,整个逻辑表达式的结果就为 假语法:条件1 && 操作(表达式)    如果条件1 为真,则执行&&后面的操作或表达式    如果条件1 为假,则不执行&&后面的操作或表达式

2、对于 ||,短路或

如果第一个表达式结果为true的,就不用继续判断第二个表达式,整个逻辑表达式的结果为true如果第一个表达式结果为false的话,则继续判断第二个表达式,并且以第二个表达式的结果作为整个逻辑表达式的结果语法:条件1 || 操作(表达式)    如果条件1 为真,则不执行&&后面的操作或表达式    如果条件1 为假,则执行&&后面的操作或表达式

4、位运算符

直接由二进制进行的运算,将数值的二进制左移或右移n位

1、只针对数字2、将数字转换为二进制再进行运算3、所有的位运算会把小数转换成整数(向下取整)再进行运行    35.786 向下取整 35    39.9999向下取整 39

位运算符

1、&:按位与

语法:num1 & num2转换为二进制后,进行每位上的数字比较。每位上的数字对应都为1时,该位的整体结果为1,否则就是0场合:判断一个数字的奇偶性。ex : n & 1 ,如果结果 为1的话,说明是奇数,否则是偶数    0000000000001    1100110011001    ===============    000000000001    ---->  奇数

2、|:按位或

语法:num1 | num2转换成二进制,每位上的数字进行比较,只要有一个位置的数为1,那么该为的结果就是1,否则就是0场合:将小数向下求整, n | 0    3.5 | 0  ==> 3 | 0    3 : 11    0 : 00    =========        11   ---> 3

3、^:按位异或

语法:num1 ^ num2转换成二进制,每位上的数字进行比较,有且只有一个位置的数为1时,该位结果才为1,否则就是0ex: 5 ^ 8    5 : 0101    8 : 1000    ===========        1101  ==> 13场合:不借助第三方变量,交换两个数字的位置    想交换 num1=5,num2=8 的位置    num1 = num1 ^ num2; // num1 = 13    5 : 0101    8 : 1000    =============        1101  ==> 13    num2 = num2 ^ num1; // num2 = 5    8 : 1000    13: 1101    ===============        0101  ==> 5    num1 = num1 ^ num2;    13 : 1101     5 : 0101    ============             1000  ==> 8 //num1=8

4、<<:左移

语法:num1 << n将二进制数想左移动几位,后面用0补齐ex:5 : 在内存中的保存形式        0000 0000 0000 0000        0000 0000 0000 0101    5 << 1 :  10        0000 0000 0000 0000        0000 0000 0000 1010  --->  10    5 << 2 :  20        0000 0000 0000 0000        0000 0000 0001 0100  --->  20

5、>>:右移

语法:num1 >> n将二进制数向右移动几位,左侧以0补齐ex:5 : 在内存中的保存形式        0000 0000 0000 0000        0000 0000 0000 0101    5 >> 1 :  2        0000 0000 0000 0000        0000 0000 0000 0010  --->  2    5 >> 2 :  1        0000 0000 0000 0000        0000 0000 0000 0001  --->  1

5、赋值运算符

=,+=,-=,*=,/=,%=,&=,^=,… …

基本赋值运算:=,将等号的右边的值保存在左边的变量中。赋值表达式也有返回值,会返回将要保存回变量的新值。扩展赋值运算:对变量内部的值进行修改的简写方法包括:+=   -=    *=   /=   %= 何时使用扩展赋值运算:需要修改变量中的值,再存回变量中ex: total*=0.8; --> total=total*0.8; 表示累乘     a+=5; --> a=a+5; 表示累加

6、条件(三目)运算符

1、目

目:操作数单目运算符:只需要一个操作数即可 ex: ++,--,!双目运算符:需要两个操作数 ex:+-,*,/,%,&&,&,||,| ... ...三目运算符:需要三个操作数

2、条件运算符

根据条件的结果 选择 某个操作数(表达式)去执行。

1、语法

? :表达式1 ? 表达式2 : 表达式3;表达式1:为boolean表达式    如果表达式1的值为 true,则运行表达式2,并且将表达式2的结果作为整个表达式的结果    如果表达式1的值为 false,则运行表达式3,并且将表达式3的结果作为整个表达式的结果

2、条件运算符嵌套

表达式2,表达式3的位置处可以嵌套其它的条件运算符ex:输入一个考试成绩     如果 成绩>=90 分, 输出 优秀     否则 如果 成绩>=80 输出 良好     否则 如果 成绩>=60 输出 及格     否则 输出 不及格    成绩>=90?"优秀":(成绩>=80?"良好":(成绩>=60?"及格":"不及格"))