01.JS-数据类型、类型转换、运算符

这篇文章是我自己在学习js过程中做的笔记,如果有错误或者遗漏的请评论告诉我。希望大家一起学习!

笔记内容主要有:数据类型、输出方式、查看数据类型、类型转换、自动类型转换、运算符、运算符优先级

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<script>
		// 1.数据类型:

			// 	字符串   string
			// 	数字     number
			// 	布尔型   boolean   - ture  false
			// 	对象     object	- 例如:{one:1,two:2,three:3}
			//  数组	 Array  - 例如: [1,2,3]    
			//  函数     function
			//  null     空 对象
			//  undefined  未定义
			/*
			NaN 的数据类型是 number
			null与undefined的区别? 
			null == undefined 
			null !== undefined 
			null的类型是object,这是由于历史原因造成的。1995年JavaScript语言的第一版,所有值都设计成32位,
			其中最低的3位用来表述数据类型,object对应的值是000。当时,只设计了五种数据类型(对象、整数、浮点数、字符串和布尔值),
			完全没考虑null,只把它当作object的一种特殊值,32位全部为0。这是typeof null返回object的根本原因。 
			为了兼容以前的代码,后来就没法修改了。这并不是说null就属于对象,本质上null是一个类似于undefined的特殊值。 
			那么他们的区别是?

			null是一个表示”无”的对象,转为数值时为0;undefined是一个表示”无”的原始值,转为数值时为NaN。

			null 参与数值运算时其值会自动转换为 0 ,因此,下列表达式计算后会得到正确的数值: 
			表达式:123 + null    结果值:123

			undefined出现的场景:

			变量声明了,但没有赋值 var i; i // undefined

			调用函数时,应该提供的参数没有提供,该参数等于undefined function f(x) { return x; } f() 
			// undefined

			对象没有赋值的属性 var o = new Object(); o.p // undefined

			函数没有返回值时,默认返回undefined function f() {} f() // undefined */



		// 2.三种输出方法:document.write() ,alert(),console.log()


		// 3.查看数据类型使用: typeof 变量名
		//                    变量名 instanceof 类型(仅限于object类型,用于判断null,数组,对象) 
		//正因为 typeof 遇到 null,数组,对象时都会返回 object 类型,所以当我们要判断一个对象是否是数组时,使用   变量名 instanceof 类型。


		// 4.强制数据类型转换:

			//(1) parseInt()  转换为number类型整数;被转化类型的首字符要为数字才能得到具体的值

					var a = "123";
					a = parseInt(a);
					console.log(a , typeof a);//123 Nubmer

					var a = "abc2";
					a = parseInt(a);
					console.log(a , typeof a);//NaN Number

					var a = "2px";
					a = parseInt(a);
					console.log(a , typeof a);//2 Number
			
			//(2) parseFloat()  转换为number类型小数;被转化类型的首字符要为数字才能得到具体的值

					var a = "25.2";
					a = parseFloat(a);
					console.log(a , typeof a);//25.2 Number

					var a = "25.00";
					a = parseFloat(a);
					console.log(a , typeof a);//25 Number  -- 如果转化后小数点后为有效值就保留,否则删除

					var a = "25.2abc";
					a = parseFloat(a);
					console.log(a , typeof a);//25.2 Number
			
			
			//(3) Number()	转换为numbe类型;只能是纯数字的字符串得到具体值,其他的都得到NaN

					// string-->number
					var a = "123";
					a = Number(a);
					console.log(a , typeof a);//123 Numner

					// boolean-->number
					var a = true;
					a =	Number(a);
					console.log(a , typeof a);//1 Number

					var a = false;
					a = Number(a);
					console.log(a , typeof a);//0 Number

					// null-->number
					var a = null;
					a = Number(a);
					console.log(a , typeof a);//0 Number


			/*
			  (4)  Boolean() 转换为boolea类型

					除了0 "" '' undefined NaN null 得到false ,其他都是ture
			
			*/
			
			//(5) String() 转换为字符串类型  任何数据都能转换为字符串类型
			//	  toString()  转换为字符串类型  但是要排除null和undefined

		// 5.自动类型转换   根据上下文环境,Javascript进行自动类型转换

			var n1 = "2";
			var n2 = "1";
			var n3 = n1-n2;//减法语义,按照数字进行运算
			console.log(n3 , typeof n3);//1 Number

			var n4 = false;
			var n5 = n1-n4;
			console.log(n5 , typeof n5);//2 Number

		
		// 6.运算符

			// (1)算术运算符:+ -  *  /  %  ++  --

				// %:取余数

				var a = 12, b = 5;
				var c = a%b;
				console.log(c);//2

				// ++:自身加 1

				// 前置++:++a ==> a = a + 1
				// 注意:前置++和其他数据参与运算时,先自增 1后运算
					var a = 12;
					var b = ++a + 3;
					console.log(a,b);//13 16

				// 后置++:a++ ==> a = a + 1
				// 注意:后置++和其他数据参与运算时,先运算后自增 1
					var a = 12;
					var b = a++ + 3;
					console.log(a,b);//13 15 (a在参与运算完后才自增)

				// 求下列a,b,c,d的值		
					var a=3,b=5,c,d;
					c = a++ +b;  //a=4 b=5 c=8
					d = ++a - b++; //a=5 b=6 d=0
					console.log(a,b,c,d); //a=5 b=6 c=8 d=0

				// 求下列a,b,c的值
					var a=1,b=2,c;
					c = a++ + b; //a=2 b=2 c=3
					c = --a + b; //a=1 b=2 c=3
					a = c-- + (++b); //c=2 b=3 a=6
					b = a-- + (++c); //a=5 c=3 b=9   
					console.log(a,b,c); //a=5 b=9 c=3

			// (2)比较运算符(得到结果为ture或false):==  !=  >  >=  <  <=  ===(全等于)  !==(不全等于)

				// ==:比较值的大小(判断)不比较数据类型
				// ===:比较值的大小 还比较值的数据类型
				// !=:结果和==是相反的,如果==判断的结果为true,那么!=得到的结果为false
				// !==:结果和===是相反的,如果===判断的结果为true,那么!==得到的结果为false


			// (3)逻辑运算符:与(&&)  或(||)  非(!)

				// &&:a&&b,如果a为true,直接返回b,而不管b为true或false;如果a为false,直接返回a
					var a = 1&&2&&3;//3     
					var b = 0&&1&&2;//0		-第一个为false的话,返回自己本身,不管后面
					var c = 1&&2&&0;//0		-为true时,一直往下执行,直到false停止
				
				// ||:a||b,如果a为false,直接返回b,而不管b为true或false;如果a为true,直接返回a
					var a = 0||1||2;//1     
					var b = 1||0||3;//1

				// !:取反   若a为true,!a返回false,否则返回true。
					var a = !1;
					console.log(a);//false


			// (4)三元运算符:variablename=(condition)?value1:value2 

				//  变量名称=(条件)?"符合条件时输出的值":"不符合条件时输出的值"


			// (5)字符串连接符(+)
				// a+b:如果a和b中至少有一个是字符串,此时+不是运算符加号,而是连接符,得到的结果还是字符串
				var a = 1,b=2,c="你我他";
				console.log(a+b+c);//3你我他

				var a = 1,b=2,c="你我他";
				console.log(a+c+b);//1你我他2

			/* (6)赋值运算符:
				=
				+=: a+=b  等同于  a=a+b
				-=: a-=b  等同于  a=a-b
				*=: a*=b  等同于  a=a*b
				/=: a/=b  等同于  a=a/b
				%=: a%=b  等同于  a=a%b
			*/
				var a = 1,b = 2;
				a+=b;
				console.log(a);//3

			/* (7)运算符优先级
			. [] ()			字段访问、数组下标、函数调用以及表达式分组
			++ -- ~ ! 		一元运算符、返回数据类型、对象创建、未定义值
			* / %			乘法、除法、取模
			+ - +			加法、减法、字符串连接
                        << >> >>>       移位
			<    <=    >    >=   	小于、小于等于、大于、大于等于、instanceof
			==    !=    ===    !==	等于、不等于、严格相等、非严格相等
			&		按位与
			^		按位异或
			|		按位或
			&&		逻辑与
			|| 		逻辑或	
			?:		条件
			= oP=	赋值、运算赋值
			,		多重求值

			优先级越高的优先也运算,可以用()提升优先级

                        例如:z = 78 * (96 + 3 + 45)
*/


		</script>
	</body>
</html>

 

接下来的日子我还会继续更新我的笔记 ,为了我能早日成为厉害的前端工程师加油。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值