JavaScript的数据类型及强弱类型_javascript 强类型-程序员宅基地

技术标签: 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个小数的数字,并且四舍五入

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41509200/article/details/100987728

智能推荐

IntelliJ IDEA中配置Tomcat_idea配置tomcat-程序员宅基地

文章浏览阅读605次,点赞13次,收藏10次。InteliJ IDEA 配置Tomcat服务器_idea配置tomcat

python入门指南txt-【杂谈】爬虫基础与快速入门指南-程序员宅基地

文章浏览阅读168次。今天给大家分享一下网络爬虫的基础知识,以及一些优秀的开源爬虫项目。网络爬虫主要是我们在面对新的任务,但自己又没有数据的时候,获取自己想要的数据的一种手段。因此我们有必要掌握一定的爬虫知识,从而更好的准备训练数据集。作者 | 言有三编辑 | 言有三1 前端网页基础在介绍爬虫之前我们先介绍一下网页基础,理解前端网页有利于我们对后面爬虫的学习,它是爬虫的基础之一。1.网页构成通常来说网页由三部分组成,分..._python入门指南 小说 txt

已解决java.lang.NullPointerException异常的正确解决方法,亲测有效!!!_tinyumbrella安装java.lang.nullpointerexception-程序员宅基地

文章浏览阅读5.3w次,点赞22次,收藏20次。在Java编程中NullPointerException是最常见的运行时异常之一,这种异常在我们访问一个空引用变量中的字段、方法或者对象时会触发。_tinyumbrella安装java.lang.nullpointerexception

如何为微信小程序添加微信支付和小程序支付功能-程序员宅基地

文章浏览阅读120次。获取微信支付相关信息 审核通过后,可以获取到一些重要的信息,包括商户号(mch_id)、密钥(key)、AppID(appid)、AppSecret(appsecret)等。处理支付回调 在用户支付成功后,微信会将支付结果通知到一个指定的URL中。我们需要在自己的服务器上处理这个支付结果,以便更新订单状态等。注册微信商户号 首先,需要在微信支付平台上注册一个微信商户号。生成签名 在发起支付请求之前,需要对请求参数进行签名。在实际的开发中,需要根据自己的业务需求进行参数的设置和处理。

LiteOS内核教程04 | 信号量(用于任务间同步)_信号量如何控制任务间的同步关系-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏4次。本文首发于公众号『mculover666』,在学习本教程的过程中,可以登录华为云论坛小熊派板块进行发帖交流!1. LiteOS内核的信号量1.1.信号量在多任务操作系统中,不同的任务之间需要同步运行,信号量功能可以为用户提供这方面的支持。信号量(Semaphore)是一种实现任务间通信的机制,实现任务之间同步或临界资源的互斥访问。1.2. 信号量的使用方式信号量可以被任务获取或者申请..._信号量如何控制任务间的同步关系

Koa-MiniProgram:构建微信小程序的高效框架-程序员宅基地

文章浏览阅读282次,点赞3次,收藏7次。Koa-MiniProgram:构建微信小程序的高效框架项目地址:https://gitcode.com/ikcamp/koa-miniprogramKoa-MiniProgram 是一个基于 Koa 的微信小程序开发框架,它旨在提升小程序开发效率和代码可维护性。通过利用 Koa 的中间件机制,你可以更方便地组织业务逻辑,让代码结构更加清晰。技术分析中间件机制Koa 的核心在于它的中间件...

随便推点

西瓜视频 iOS 播放器技术重构-程序员宅基地

文章浏览阅读3.7k次,点赞3次,收藏8次。动手点关注干货不迷路????播放器简介播放器是西瓜视频等视频类 App 最主要的业务场景,也是最主要的流量入口,其承载包括下层基础播放,上层的各种播放业务:状态栏、弹幕、音量、亮度、评论、点赞、进度、倍速、清晰度、选集、合集、商业化等。西瓜对整个业务播放器做了整体抽象,提供了一套可插拔,可复用的播放器业务框架,包括:视频播放、播控交互、业务拓展。本文播放器是指业务播放器,主..._视频播放软件架构

前端模拟列表的数组数据进行筛选_微信h5页面列表前端按列筛选-程序员宅基地

文章浏览阅读279次。前端模拟列表的数组数据进行筛选_微信h5页面列表前端按列筛选

重庆成人自考本科学校重要吗?-程序员宅基地

文章浏览阅读188次。自考选择主考院校一定要弄清楚报考院校毕业的规定,学士学位的规定。有些报考院校会有额外的规定,比如毕业论文优良,或者高于中等水平的平均成绩。

[FAQ21281]android P分区表中odmdtbo与dtbo分区的说明-程序员宅基地

文章浏览阅读552次。1. 对于需要OTA(O to P)升级到P版本的Project,分区layout必须与O版本完全一致,因此,请配置。虽然android P分区表中可以同时看到odmdtbo与dtbo分区,但实际上,ptgen在build生成的。Android O版本odmdtbo.img,在Android P版本改名成dtbo.img。此时build会生成odmdtbo.img,对应下载到odmdtbo分区。此时build会生成dtbo.img,对应下载到dtbo分区。_odmdtbo

vscode中配置.wxss和.wxml语法高亮和不全插件_vscode检查wxml语法-程序员宅基地

文章浏览阅读9.5k次。vscode默认无法识别wxml和wxss语法, 1、打开编辑器,选择微信文件,点击右下角的纯文本。然后选择相应匹配的识别格式,css和htmlimage.png但是强大的vscode自然有解决办法,我们点击纯文本会发现image.png所以我们只要将wxml关联成html就可以语法高亮了..._vscode检查wxml语法

大数据技术未来发展前景及趋势分析_大数据技术的发展方向-程序员宅基地

文章浏览阅读5.7k次。流大数据分析Storm: Apache Storm是一种开源的分布式实时计算系统。Storm加速了流数据处理的过程,为Hadoop批处理提供实时数据处理。Spark: Spark是一个兼容Hadoop数据源的内存数据处理平台,运行速度相比于HadoopMapReduce更快。Spark适合机器学习以及交互式数据查询工作,包含Scala、Python和Java API,这更有利于开发人员使用..._大数据技术的发展方向