运算符
Js 运算符:也叫操作符
通过运算符可以对一个或多个值进行运算,并获取运算结果
一、算术类:
1、+ 求和 var c = 123; console.log(“c =”+c) // ”c = 123” ;
2、- 减法 console.log(1 + 2 + “3”) //”33”从左往右运算
3、* 乘法运算 被除数不能为0,否则返回Infinity
4、/ 除法运算
5、%(求模、取余)
//隐式转换:对于非Number类型的值进行运算时,会将值转换为Number然后进行运算。可以通过为一个值-0,*1,/1来将其转换为Number类型。原理和Number()一样
//只有+不能隐式转换,任何值和字符串相机加,都会转换为字符串做拼串。
为任意的数据类型+一个” ”,即可将其转为String类型。实际上是调用String函数
实际上是调用String函数
特殊字符转为数字运算:true=1;false=0;null=0;NaN和任何数据做运算都等于NaN.
//为假值的场景?
解:false
//bool:false “” ‘’(空字符串)
Console.log(false == ‘’)//true、js中空格是假值 0 ‘0’0.0
1、+:加法运算:符号两边都是数字类型
:连接符:有一个不为数字则做连接
Var num1= 100;
Var num2= 200;
Console.log(num1+num2)
//字符串连接
Console.log(name+” ”+” ”);
//字符串拼接变量
Var msg = “i’m a var ...”;
Document.write(“<div>”+mes+”</div>”)
Document.write(‘<p>’+mes+’</p>’)
2、//数字字符串做减法
//”弱”数据类型语言:隐式转换
//”强”类型
//隐式转换:自动化(数字字符串)
//纯字符无法作用隐式转换
Var str =”100mea”
Var str2 =”200msdf”
Console.log(str-str2)//NaN not a number
//强制类型:手动操作(只能转换数字开头的字符串,否则NaN返回)
//paresFloat();//字符串转化为浮点数
//paresInt();//字符串转化为整数(小数点省略)
Str = paresFloat(str)
Console.log(str,str2)
Coonsole.log(paresInt(“109.9mewef”)//110
Coonsole.log(paresInt(“mewef”)//NaN
Coonsole.log(paresInt(“mewef26565”)//NaN
二、一元运算符:只需要一个操作数
+正号 不会对数字产生任何影响,可以对一个其他数据使用+,将其转换为Number
-负号 符号取反 对于非Number类型的值,它会将其转换为Number,然后运算
原理和Number()函数一样。
var a=1 + +”2” +3;console.log(a) //6
三、自增自减运算符
//后++ -- 先输出再运算 权重低
//前++ -- 先运算再输出 权重高
var a = 1;
Console.log(a++)// 1 Console.log(a--)// 1
Console.log(++a) // 2 Console.log(--a)// 0
运算符的优先级导致
1、前++和后++,都会立即使原来的变量的值自增1
但是a++的值等于自增前的值,++a的值等于自增后的值。/2、前--和后--,都会立即使原来的变量的值自减1
但是a--的值等于自减前的值,--a的值等于自减后的值。
var b = 10;
Var re = b++ + ++d + b // 10 + 12+12
Console.log(re) //34
四、逻辑运算符:最终结果(true 、false)
作用:程序的逻辑判断
1、逻辑与&& :所有条件都满足才为true
exp1(表达式1) && exp2(表达式2)
if(age == 22 && sex=="男")//所有条件都满足才为true
if(a == 22 && s =="男")语法问题
第一个值为false,则不会检查第二个
2、逻辑或||: 至少一个条件满足就为true
第一个值为true,则不会检查第二个
- 逻辑非!: (取反、非假即真)
对一个布尔值进行取反操作,对于非布尔值会将其转换成布尔值
- 逻辑抑或:xor
- 非布尔值进行逻辑运算时:先将其转为布尔值再运算,返回原值
与运算:
都为true返回后面的值。 Var a= 5 && 2 ; console.log(a) //2
同为false,返回靠前的值.Var a= NaN && 0 ; console.log(a) //NaN
true和false同时存在,返回true的值 Var a= 0 && 2 ; console.log(a) //2
或运算:
第一个值为true,则直接返回第一个值
第一个值为false,则直接返回第二个值
五、赋值运算符:将符号右侧的值给符号左边的变量
=、+=、-=、*=、/=、%=
Var a = ‘10’;
Var b = 20;
a -= b; //a= a-b 隐式转换
Console.log(a)//-10
六、比较运算符(关系运算符):判断,返回结果(false/true) 条件判断
>、 >= 、< 、<=
==等于 //比较值是否相等会对变量进行类型转换
===全等于 //比较值与数据类型是否都相等
!=不等于 //比较值是否不相等,会对变量进行类型转换,转换后相等依然返回false
!==不全等于 //比较值与数据类型是否都不相等
Var a = 10; Var b = ‘20’;
Console.log(a>b) //false
Console.log(undefined == null) //true undefined衍生自null
Console.log(NaN == NaN) //任何值和NaN作比较都是false,包括和他本身
Console.log(false == []) //true数组不能为空
Console.log(false == {}) //falese 对象可以为空
Comsole.log(false == null) //false null是对象可以为空
Console.log(‘a’>’Z’) //true//ascII码:数字//96 65
两端都是字符串时,不会将其转换为数字比较,比较的是字符编码、
并且是按顺序一位一位进行比较
- 条件运算符也叫三元运算符
条件运算符用于基于条件的赋值运算。
语法:变量 = (条件) ? 值1:值2
var a = 30 b = 20; var max = a > b ? a : b ;consle.log(max) // 30
比较三个数大小:
var a = 30 b = 20 c = 10; var max = a > b ? a : b; max = max > c ? max : c; consle.log(max) // 30
条件运算符在执行时,首先对条件表达式进行求值。
如果该值为true,则执行语句1,并返回执行结果
如果该值为false,则执行语句2,并返回执行结果
如果条件的表达式的求值结果是一个非布尔值,会将其转换为布尔值然后再运算。
- 运算符的优先级
可以使用()来改变优先级
1、.、[]、new
2、()
3、++、 --
4、!、~、+、-、typeof、void、delete
5、%、*、/
6、+、-
7、<<、>>、>>>
8、<、<=、>、>=
9、==、!==、===
10、&
11、^
12、|
13、&&
14、||
15、?:
16、=、+=、-=、*=、/=、%=
17、,
比较运算符
算术类
逻辑类
赋值类