JS运算符

01运算符

/* 
	运算符也叫操作符
	通过运算符可以对一个或者多个进行运算
	比如:typeof 就是运算符,可以来获得一个值的类型
		它会将该值得类型以字符串的形式返回
		number string boolean undefined object
					
	算数运算符
	当对非Number类型的值进行运算时,会将这些值转换为Number
	任何值和NaN做运算都得NaN
		+	+可以对两个值进行加法运算,并将结果返回。
	    如果对两个字符串进行加法运算,则会做拼串
		会将两个字符串拼接为一个字符串,并返回。
		任何值和字符串相加都会转换为字符串。						
		-	-可以对两个值进行减法运算,并将结果返回。					
		*	-可以对两个值进行减法运算,并将结果返回。				
		/	-对两个值进行除法				
		%	-取模运算(取余数)
		 */
			var a = 123;			
			var result = typeof a;
				result = 456;
				result = true + false;
				result = 2 + null;
				result = 2 + NaN;
				result = "123" + "456";
				result = 100 - true;
				result = 100 - '1';
				result = 2 * 2;
				result = 2 * '8';
				result = 2 * undefined;
				result = 2 * null;
				result = 4 / 2;
				result = 3 / 2;
				/* 
				 任何值做- * /  运算时都会自动转换为Number	
				我们可以利用这一特点做隐式的类型转换
					可以通过为一个值 -0 *1 /1来将其转换为Number
					原理和Number()函数一样,使用起来更加简单					
				 */
				var d = '123'
				d = d - 0;
			console.log(d);
			console.log(typeof d);

02一元运算符

/* 
	一元运算符,只需要一个操作数
		+	正号		正号不会对数字产生影响
		-	负号		负号可以对数字进行负号的取反		 
		对于非Number类型的值,
		它会将先转换为Number,然后在运算
		可以对一个其他的数据类型使用,来将其转换为number
	它的原理
 */
		var a = -123;
			a = -a;
			a = true;//boolean
			a = -a;//number
			console.log("a = "+a)
			console.log(typeof a)

03自增或自减

/* 
	自增 ++
		-通过自增可以使变量在自身的基础上增加1
		-对于一个变量自增以后,原变量的值会立即自增1
		-自增分成两种:后++(a++) 和前++(++a)
		无论是a++还是++a,都会立即使原变量的值自增1
			不同的是a++ 和++a的值不同
			a++的值等于原变量的值,(自增前的值)
			++a的值等于原变量新值(自增后的值)
	自减--
		-通过自减可以使变量在自身的基础上减1
		-自减分成两种:后--(a--)和前--(--a)
		无论是a-- 还是--a 都会立即使变量的值自减1
		不同的是a-- 和 --a的值不同
				a--是变量的原值(自减前的值)
				--a是变量的新值(自减以后的值)
 */
	var num = 10;		
	num--;
	--num;
	console.log(num--)
	console.log(--num)
	//console.log("num = "+num)
    var a = 1;
	// 使a自增1
	//a++;
	//++a;
	//console.log(a++);//表达式的值
	console.log('++a = ' + ++a);
	console.log('a = '+a);

04逻辑运算符

/* 
    JS中为我们提供了三种逻辑运算符
		!	非	-对一个值进行非运算,对值取反,true变false,false变true
			    -如果对一个值进行两次取反,它的值不变。
				-如果对非布尔值进行元素,则会将其转换为布尔值,然后再取反。
					所以我们可以利用该特点,来将一个其他的数据类型转换为布尔值
					可以为任意数据类型取两次反,来将其转换为布尔值,
					原理和Boolean()函数一样					
		&&	与	-&&可以对符号两侧的值进行与运算并返回结果
				-两个值中只要有一个值为false就返回false
					只要两个值都为true时,才返回true.
				-JS中的“与”属于短路的与,
					如果第一个值为false,则不会看第二个值			
		||	或	-&&可以对符号两侧的值进行与运算并返回结果
				-两个值只要有一个true,就返回true
				-JS中的“或”属于短路的或,
					如果第一个值为true,则不会看第二个值
 */
		var a = true;
		//对a进行非运算
		a = !a;
		//console.log("a = "+a);
		var b = 10;
		b = !b;
		console.log("b = "+b);
		console.log(typeof b);

05非布尔值的与或

/* 
	&& || 非布尔值的情况
		-对于非布尔值进行与或运算时,
		会先将其转换为布尔值,然后再运算,并且返回原值
	-与运算:
		-如果第一个值为true,则必然返回第二个值
		-如果第一个值为false,则直接返回第一个值
	-或运算
		-如果第一个值为true,则直接返回第一个值
		-如果第一个值为false,则直接返回第二个值
*/

06赋值运算符

/* 
	= 
		将符号右侧的值赋值给左侧的变量
				
	+= 
		a +=5 等价于 a = a + 5
					
	-=
		a -=5 等价于 a = a - 5
				
	*=
		a *=5 等价于 a = a * 5
				
	/=
		a /=5 等价于 a = a / 5
					
	%=
		a %=5 等价于 a = a % 5
*/
	var a = 10;
		a +=5;
		a -=5;
		a *=5;
		a /=5;
		a %=5;
	console.log(a);

07关系运算符

/* 
	通过关系运算符可以比较两个值之间的大小关系,
		如果关系运算成立它会返回true,如果关系不成立则会返回false		
			>	大于号
				-判断符号左侧的值是否大于右侧
				-如果关系成立,返回true,如果关系不成立则返回false
					
			>= 大于等于
				-判断符号左侧的值是否大于或等于右侧的值
					
			>	小于号
				-判断符号左侧的值是否小于右侧
				-如果关系成立,返回true,如果关系不成立则返回false
					
			>= 小于等于
				-判断符号左侧的值是否小于或等于右侧的值
						
		非数值的情况
			-对于非数值进行比较
			-如果符号两侧的值都是字符串时,不会将其转换为数字进行比较
		而会
*/
			var result = 5 > 10;		
			result = 5 > 4;
			result = 5 >= 5;
			result = 5 >= 4;
			result = 5 <= 5;
			result = 5 <= 4;
			console.log("result = "+result);
			console.log(1 > true);//false
			console.log(1 >= true);//true
			console.log(1 > "0");//true
			
			// 比较两个字符串时,比较的是字符串的字符编码
			// console.log("a" < "b");//true
			// 比较字符编码时是一位一位进行比较
			// 如果两位一样,则比较下一位,所以借用它来对英文进行比较排序
			// consloe.log("abc" < "bcd");//true
			// 比较中文时没有意义
			// console.log("哈" < "我");//true
			
			// 如果比较的两个字符串的数字,可能会得到不可预测的结果
			// 注意:在比较两个字符串的数字时,一定一定一定要转型
			console.log("12345678900" < +"5")

08unicode运算符

<!-- 在网页中使用Unicode编码
			&#编码;这里的编码需要的是10进制
		 -->
		 
		 <h1 style="font-size: 200px;">&#9760</h1>
		 <h1 style="font-size: 200px;">&#3333</h1>

09相等运算符

/* 
	==来做相等运算
		比较两个值是否相等
		如果相等会返回true,否则返回false
				
	!=来做不相等运算
		比较两个值是否不相等
		如果不相等会返回true,否则返回false
		不相等也会对变量进行自动的类型转换,如果转换后相等它会
	返回false
			
	===		全等		用来判断两个值是否全等,如果两个值类型不同,直接返回false
				
	!==		不全等	用来判断两个值是否不全等,如果两个值类型相同,直接返回true	
				
 */
	console.log(1 == 1);//true			
	var a = 10;			
	console.log(a == 4);//false			
/* 
	undefined 衍生自 null
	所以这两个值做相等判断时,会返回true
*/
	console.log(undefined == null);//true			
/* NaN不和任何值相等,包括他本身 */
	console.log(NaN == NaN);//false		
		var b = NaN;
		// 判断b的值是否是NaN
		//console.log(b == NaN);
/* 
	 可以通过isNaN()函数来判断一个值是否是NaN
	 如果该值是NaN则返回true,否则返回false
 */
	console.log(isNaN(b));

10条件运算符

/* 
	条件运算符 = 三元运算符
		语法:
			条件表达式?语句1:语句2;
		-	执行的流程:
				条件运算在执行时,首先对条件表达式进行求值,
					如果该值为true,则执行语句1,并返回执行结果
					如果该值为false,则执行语句2,并返回执行结果	
					如果条件表达式的求职结果是一个非布尔值,
						会将其转换为布尔值然后在做运算
 */
	// false?alert("语句1"):alert("语句2")
		var a = 30;
		var b = 50;		
		var c = 90;
	//a > b ? alert("a大"):alert("b大")		
	// 获取a和b中的最大值
		var max = a > b ? a : b;
		console.log("max = "+max)
	// 获取a b c中的最大值
		max = max > c ? max : c;
		console.log("max = "+max)	
		var max = a > b ? (a >c ? a : c) : (b >c ? b : c);
		console.log("max ="+max)

11运算符优先级

/* 
	,运算符
	使用,可以分割多个语句,一般可以在声明多个变量
 */
	// var a=1,b=2,c=3;
	// alert(a);
/* 
	 就和数学中一样,在我们js中运算符也有优先级,
	 比如:先乘除,后加减
	 但是这个表我们并不需要记忆,如果遇到优先级不清楚
	 可以使用()来改变
 */
    //var result = 1 + 2 * 3;
    var result = (1 || 2) && 3;
	console.log("result = "+result);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值