欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Javascript运算符操作

程序员文章站 2022-05-18 17:08:11
...

一、作用

执行特定逻辑运算

二、分类:按功能划分                  算数运算符("+" , "-"  ,"*"  ,"/" , "%)

                                                    位运算符

                                                    关系运算符

                                                    逻辑运算符

                 按操作数个数划分        单目运算符(i++ , !)

                                                    双目运算符(a+b , a-b)

                                                    三目运算符(a>b?1:0)

三、优先级

先算优先级高的后优先级底的

优先级相同的就从左到右执行

                  Javascript运算符操作

四、算数运算符(+-*/%和数学上的运算是一样的)

    

4.1.1 + 比较不同它还可以做为两个字符串的链接符

	<script type="text/javascript">
		var num='12'+100;
		console.log(num);//12100
		console.log(typeof num);//number
	</script>

4.1.2 如果非number类型运算时会先转换成number类型后运算

	<script type="text/javascript">
		var num=true+100;
		console.log(num);//101
		console.log(typeof num);//number
	</script>
	<script type="text/javascript">
		var num=null+100;
		console.log(num);//101
		console.log(typeof num);//number
	</script>

4.1.3 任何值和NaN做运算都为NaN

	<script type="text/javascript">
		var num=NaN+100;
		console.log(num);//101
		console.log(typeof num);//number
	</script>

4.2.1 运算符时 分母为零输出infinite

4.2.3 % 范m/n取余时 n=0  返回nan

                                  m=0 返回0

                                  m>n 返回正常取余的值

                                 m<n 返回m

五、正负运算符

	<script type="text/javascript">
		var num=100;
		num=+num;
		console.log(num);//nan
	</script>
        <script type="text/javascript">
		var str=null;
		var res=str;
		console.log(res);//0
	</script>

六、赋值运算符

“=”右边是常量,左边是变量  X=10;

"+=" a+=1   相当于a=a+1

"-=" a-=1   相当于a=a-1

"*=" a*=1   相当于a=a*(1)

"/=" a/=1   相当于a=a/(1)

七、自增运算符

7.1 无论运算符在前还是在后变量在自身基础上都会改变

	<script type="text/javascript">
		var i=10;
		i++; //++i也输出11  --i和i--输出9
		console.log(i);//11
	</script>

7.2 i++和i--是先用i当前值作为表达式的值,在进行自身自增自减就是“先使用后改变”

	<script type="text/javascript">
		var a1=10;
		var a2=20;
		var res=(a1++)+(a2++);
		console.log(res);//30
		console.log(a1);//11
		console.log(a2);//21

	</script>
7.3 ++i和--i是先用i当前值进行自身自增自减后作为表达式的值,“先改变后使用”
	<script type="text/javascript">
		var a1=10;
		var a2=20;
		var res=(++a1)+(++a2);
		console.log(res);//32
		console.log(a1);//11
		console.log(a2);//21

	</script>

八、关系运算符(返回值为true或false)

8.1 两边都是数值进行比较

	<script type="text/javascript">
		var a=100;
		var b=100;
		console.log(a<b);//false
		console.log(a>b);//false
		console.log(a<=b);//true
		console.log(a>=b);//true
		console.log(a==b);//true  比较数值大小相等是返回true
		console.log(a!=b);//false
		console.log(a===b);//true  比较数值和类型都要相同时返回true
		console.log(a!==b);//false
	</script>

8.2 对于非数值运算时转换成数值进行比较

	<script type="text/javascript">
		var a=100;
		var b='100';
		console.log(a<b);//false
		console.log(a>b);//false
		console.log(a<=b);//true
		console.log(a>=b);//true
		console.log(a==b);//true  比较数值大小相等是返回true
		console.log(a!=b);//false
		console.log(a===b);//false  比较数值和类型都要相同时返回true
		console.log(a!==b);//true
	</script>

8.3 两边都不是数值进行比较,不会将其转换成数字进行比较而会分别比较字符串中字符Unicode编码

Unicode码 是统一的标准码

	<script type="text/javascript">
		console.log("a"<"b");//a为97  b为98  所以输出为true
	</script>

8.4 null ,undefined ,NaN比较

	<script type="text/javascript">
		console.log(null==0);//false
		console.log(null==null);//true
		console.log(undefined==0);//false
		console.log(undefined==undefined);//true
		console.log(NaN==0);//false
		console.log(NaN==NaN);//false
	</script>
	<script type="text/javascript">
		var num=100;
		console.log(isNaN(num));//false
		console.log(null==undefined);//true
		console.log(null===undefined);//false
	</script>

8.5 isNaN()函数——是否不为数值型(就是是数值返回false,不是数字返回true)

	<script type="text/javascript">
		var num=100;
		console.log(isNaN(num));//false
	</script>

九、逻辑运算符

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

&&(与):一假则假

	<script type="text/javascript">
		//9.1 对于Boolean类型直接转换成Boolean类型转换
		true && alert("111"); //弹出111  短路测试
		//9.2 如果A条件不成立返回条件A本身
		false && alert("111"); //无反应  短路测试
		//9.3 如果A成立条件B成不成立都返回B本身
		var res = 123 && "aaa";
		console.log(res); //aaa
		var res1 = null && 0;//null
		console.log(res1); //aaa
	</script>

 ||(或):一真则真

   

	<script type="text/javascript">
		var res=(3>7)||(14>10)
		console.log(res);//true
		//短路测试
		(7<3)||alert("222");//弹出222
		//9.4对于Boolean类型直接转换成Boolean类型转换
		//9.5 如果A条件成立返回条件A本身
		(17>3)||alert("222");//返回true,因为前面已经为真就不执行后面的了
		//9.6 如果A不成立条件B成不成立都返回B本身
		var res1=123||"123";
		console.log(res1);//返回123	
		var res2=null||0;
		console.log(res2);//返回0	
	</script>

!(非):真就是假,假就是真

	<script type="text/javascript">
		var res=!(3>1);
		console.log(res);//false
		//一个值进行两次去反不会有变化
		var res1=!!100;//可以转化为Boolean类型
		console.log(res1);//true		
	</script>

十、逗号运算符(不常用,并不是出现逗号的都是逗号表达式)

a=1,b=3,c=4;

	<script type="text/javascript">
		var res=(num1=1+2,num2=1*3,num3=1/4);
		console.log(res);//0.25  只是num3赋值给了res	
	</script>

十一、三目运算符(条件运算符)

条件语句?语句1:语句2

如果前面的语句为true则执行语句1,否则执行语句2

	<script type="text/javascript">
		7>9?alert(true):alert(false);
	</script>

练习1:用户从键盘中输入三个数,找到最大的值并且输出

	<script type="text/javascript">
		//问题:用户输入的三个值找到最大的,并且输出
		//定义三个变量,用来接收用户输入的值
		var num1,num2,num3;
		//处理用户的输入 alert , console.log , prompt()(利用这个接收用户输入的值)
		num1=Number(prompt("请输入第1个数"));
		num2=Number(prompt("请输入第2个数"));
		num3=Number(prompt("请输入第3个数"));
		//定义一个变量来
		var max;
		//利用三目运算符进行两两比较
		max=num1>num2?num1:num2;
		max=max>num3?max:num3;
		//输出结果
		console.log(max);
	</script>

优化后

	<script type="text/javascript">
		//问题:用户输入的三个值找到最大的,并且输出
		//定义四个变量,用来接收用户输入的值和保存他的最大值的变量
		var num1,num2,num3,max;
		//处理用户的输入 alert , console.log , prompt()(利用这个接收用户输入的值)
		num1=Number(prompt("请输入第1个数"));
		num2=+(prompt("请输入第2个数"));
		num3=+(prompt("请输入第3个数"));
		//利用三目运算符进行两两比较
		max=num1>num2?num1:num2;
		max=max>num3?max:num3;
		//输出结果
		console.log(max);
	</script>