JavaScript的数据类型及强弱类型

JavaScript的数据类型及强弱类型

1、JS数据类型

JavaScript中有6种数据类型:数字(number)、字符串(string)、布尔值(boolean)、undefined、null、对象(Object)。其中对象类型包括:数组(Array)、函数(Function)、还有两个特殊的对象:正则(RegExp)和日期(Date)。

2、JS数据类型的判断

利用函数typeof()进行判断,可以返回六种字符串类型的值
数字(number)、字符串(string)、布尔值(boolean)、函数(Function)、对象(Object)、undefined
示例如下

	document.write(typeof(1) + "<br>");
	document.write(typeof ' ' + "<br>");
	document.write(typeof true + "<br>");
	document.write(typeof undefined + "<br>");
	document.write(typeof null + "<br>");
	document.write(typeof new Function() + "<br>");
	document.write(typeof [] + "<br>");
	document.write(document.write(typeof new Date() + "<br>"));
	document.write(typeof new RegExp() + "<br>");

输出结果如下所示
在这里插入图片描述
注释

  1. 数组返回object
  2. null返回object
  3. typeof后返回object
1)强类型定义语言:

强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

2)弱类型定义语言:

数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
  强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!

4、类型转换

1)显示类型转换
Number(mix)

示例如下

		<script>
		var num = Number("123");
		var demo_true = Number(true);
		var demo_false = Number(false);
		var KONG = Number(null);
		var weidingyi = Number(undefined);
		var zimu = Number("a");
		var zimu_shuzi = Number("123abc");
		document.write(typeof(num) + " : " + num + "<br>");
		document.write(typeof(demo_true) + " : " + demo_true + "<br>");
		document.write(typeof(demo_false) + " : " + demo_false + "<br>");
		document.write(typeof(KONG) + " : " + KONG + "<br>");
		document.write(typeof(weidingyi) + " : " + weidingyi + "<br>");
		document.write(typeof(zimu) + " : " + zimu + "<br>");
		document.write(typeof(zimu_shuzi) + " : " + zimu_shuzi + "<br>");
		</script>
		结果如下

在这里插入图片描述

parseInt(string,radix)
  1. 将待转换的纯字符串数字和数字去掉小数点后面的部分并取其整数部分,其他值均返回NaN

    <script>
     	var num = parseInt("123");
     	var zifu = parseInt("abs");
     	var qita = parseInt(undefined);
     	var kong = parseInt(null);
     	document.write(typeof(num) + " : " + num + "<br>");
     	document.write(typeof(zifu) + " : " + zifu + "<br>");
     	document.write(typeof(qita) + " : " + qita + "<br>");
     	document.write(typeof(kong) + " : " + kong + "<br>");
     </script>
    

转换结果
在这里插入图片描述

  1. 将待转数字从其他进制转成十进制
    16那个位置的radix取值范围2~36

    <script>
     	var num = parseInt("10" , 16);
     	document.write(typeof(num) + " : " + num + "<br>");
    </script>
    

在这里插入图片描述

  1. 取出数字加字母中的整数数字

     <script>
     var num = parseInt("123.4abc");
     var photo = parseInt("567px");
     document.write(typeof(num) + " : " + num + "<br>");
     document.write(typeof(photo) + " : " + photo + "<br>");
     </script>
    

在这里插入图片描述

parseFloat(string)

取出数字加字母中的小数

<script>
	var num = parseFloat("123.4.5abc");
	document.write(typeof(num) + " : " + num + "<br>");
</script>

在这里插入图片描述

String(mix)

不管mix中时什么数据,将mix转换成字符串

<script>
	var param1 = String("123.4.5abc");
	var param2 = String(null);
	var param3 = String(undefined);
	document.write(typeof(param1) + " : " + param1 + "<br>");
	document.write(typeof(param2) + " : " + param2 + "<br>");
	document.write(typeof(param3) + " : " + param3 + "<br>");
</script>

在这里插入图片描述

Boolean(mix)
<script>
	var param1 = Boolean("123.4.5abc");
	var param2 = Boolean(null);
	var param3 = Boolean(undefined);
	var param4 = Boolean('');
	document.write(typeof(param1) + " : " + param1 + "<br>");
	document.write(typeof(param2) + " : " + param2 + "<br>");
	document.write(typeof(param3) + " : " + param3 + "<br>");
	document.write(typeof(param4) + " : " + param4 + "<br>");
</script>

在这里插入图片描述

toString(radix)
  1. null和undefined没有toString()属性

  2. 将数字转换成对应进制

     <script>
     	var num1 = 10;
     	var test1 = num1.toString(8);
     	document.write(typeof(test1) + " : " + test1 + "<br>");
     	var num2 = 1010;
     	var test2 = parseInt(num2 , 2);
     	var param2 = test2.toString(16);
     	document.write(typeof(param2) + " : " + param2 + "<br>");
     </script>
    

在这里插入图片描述

2)隐示类型转换
isNaN(param)

Number(param) < – > NaN
将param用Number()转换,然后与NaN比对

param++和param–

将param用Number()转换,然后再加(减)1,但即使转不成数字,typeof之后仍是数字类型

+ param和- param(一元正负)

将param用Number()转换,但即使转不成数字,typeof之后仍是数字类型

a + b

+两侧又一个字符串,所得结果即为字符串

- * / %

Number()

&& || !

Boolean()

> < <= >=

字符串与数字比,将字符串转换成数字再比较(数字优先)

== !=(一样)

1==1为true
1 == "1"为true

=== !==(一样)

其他值均绝对,但NaN===NaN为false

特殊

undefined>0为false
undefined<0为false
undefined == 0为false
null > 0为false
null < 0为false
null == 0为false
null == undefined为true
NaN==NaN为false
document.write(typeof(typeof(param2)))返回string

num.toFixed(radix)

将num转换成radix个小数的数字,并且四舍五入

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值