01-数据类型和转换

news2024/10/7 18:24:54

数据

定义:对现实生活中事物的抽象描述,在程序世界中一切都采用数据进行描述,程序的执行实际上就是对数据的操作。数据是存储在内存和硬盘中的。

数据类型

  1. 基本数据类型

数字(number)、字符串(string)、布尔(boolean)、未定义(undefined)、空(null)

// 数字类型
1 2 3 4 

// 字符串类型
'a' 'b' 'c'

// 布尔类型
true false

// 未定义类型
undefined

// 空
null
  1. 引用数据类型

数组(array)、对象(object)、函数(function)、符号(symbol)

// 数组类型
[1, 2, 3, 4, 5]

// 对象类型
{name: 'zyc', age: 20, sex: '男'};

// 函数类型
function fn() {
  console.log('hello world');
}

变量

**定义: **对数据所在空间的别名。通过引用变量可以获取到该空间内存储的数据值。
类型:变量的类型是由该空间内存储的数据类型决定的。
命名:只能以字母、下划线、$符号开头,后面接上字母、下划线、数字或其它符号构成。不能与关键字(var/const/let/switch/for/if/else)或保留字(class)等冲突。

变量声明示例

  1. 基本数据类型声明
// 数字类型
var n = 100;

// 字符串类型
var str = 'zhangyc'

// 布尔类型
var bool = true

// 未定义
var un;

// 空
var em = null;
  1. 引用数据类型声明
// 数组类型
var arr = [1, 2, 3, 4, 5];

// 对象类型
var obj = {
  name: 'zhangyc',
  age: 20,
  sex: '男'
}

// 函数类型
function fn() {
  console.log('hello world');
}
  1. 变量类型检测
// 使用 typeof 函数进行判定变量类型

typeof(1); // 'number'类型

typeof('hello world'); // 'string'类型

typeof(un); // 'undefined'类型

typeof(null); // 'object'类型

typeof({}); // 'object'类型

typeof(function fn() {}); // 'function'类型

数据类型转换

其它类型转换为字符串类型

转换为字符串类型的方式:

  • 调用各自包装类的toString方法
  • 临时借用字符串包装类String()方法
  • +‘’ 间接调用字符串包装类String()方法
  1. 数字number 转换为 字符串string

本质上调用的是Number.prototype.toString() 方法得到的
常见的数字类型分为:普通数字类型(0、1、2)、无穷大(Infinity)、非数字(NaN)

10; // '10'
0; // '0'
Infinity;  // 'Infinity'
-Infinity;  // '-Infinity'
NaN; // 'NaN'
  1. 布尔boolean 转换为 字符串string

本质上调用的是Boolean.prototype.toString() 方法得到的

true;  //  'true'
false;  //  'false'
  1. 未定义undefined 转换为 字符串string

由于undefined无属性toString方法,本质上是调用String(undefined)方法得到的

undefined;	// 'undefined'
  1. 空null 转换为 字符串string

由于null无属性toString方法, 因此本质上是调用String()方法得到的

null;  //  'null'
  1. 对象object 转换为 字符串string

本质上是调用Object.prototype.toString()方法得到的

{name: zhangyc, age: 24, sex: '男'};   //  '[object Object]'
  1. 数组array 转换为 字符串string

本质上是:调用Array.prototype.toString方法得到的, 该方法内部是遍历数组中的每项,将其按照上述基础转换方式得到每一项的字符串, 最终使用逗号’,‘拼接得到整个数组转换后的字符串内容
若数组中的某一项是undefined 、null ,最终转换为字符串形式时为 空串’’

[1,2,3,4,5];  //  '1,2,3,4,5'
[1,2,undefined,4]; // '1,2,,4' 
[2,3,null]; // '2,3,'
[1,2,{name: 'maomi'}];  // '1,2,[object Object]'
  1. 函数function 转换为 字符串string

本质上是:调用Function.prototype.toString方法得到的。

function fn() { console.log('hello world'); };	//  'function fn() {console.log('hello world');}'

其它类型转换为数字类型

转换为数字类型的方式:调用Number(),
转换结果分为两种类型:可以转换成功的(普通数字), 转换失败的(NaN)

  1. 字符串string 转换为 数字number

纯粹的数字字符串格式,才能转换成功。如‘123’、’ 123’

'123';	// 123
'123abc';	//  NaN
'abc123';	// NaN
'  123';	// 123
'1  23';	// NaN
'abc';		// NaN
  1. 布尔Boolean 转换为 数字number
true;		// 1
false;	// 0
  1. 未定义undefined 转换为 数字number
undefined;		// NaN
  1. 空null 转换为 数字number
null;	// 0
  1. 对象object 转换为 数字number
{name: 'zhangyc'};	// NaN
  1. 数组array 转换为 数字number
[1,2,3,4];	// NaN
  1. 函数function 转换为 数字number
function fn() { console.log('hello world');}	// NaN

其它类型转换为布尔类型

其它类型转换为布尔类型,本质上是调用Boolean()方法,主要用于比较运算、逻辑运算中
除了特定的几个数据,其它的类型转换为布尔类型时均为 true

0;		// 0 转换为布尔值: false
NaN;	// 非数字 转换为布尔值: false
'';		// 空串 转换为布尔值: false
undefined;	// 未定义 转换为布尔值: false
null;		// 空 转换为布尔值: false

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/973738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于AI识别与视频监控技术的土地建设履约全周期监管方案

一、项目背景 当前,各级政府正在积极大力推进土地节约集约利用工作,不断推动工业用地提质增效。但是,持续推进土地节约集约利用也面临着一些新情况、新问题,比如,在工业用地批后监管机制还不够健全,存在项…

无涯教程-JavaScript - DVARP函数

描述 DVARP函数通过使用列表或数据库中符合您指定条件的记录的字段(列)中的数字,基于整个总体计算总体的方差。 语法 DVARP (database, field, criteria)争论 Argument描述Required/Optionaldatabase 组成列表或数据库的单元格范围。 数据库是相关数据的列表,其中相关信息的…

2023-09-04 Linux 让shell编译脚本里面设置的环境变量改变kernel里面驱动文件的宏定义值方法,我这里用来做修改固件版本

一、原生的读取版本接口是/proc/version,我这里需要提供获取固件版本号的api给app,因为版本号会经常需要修改,如果每次都到kernel下修改比较麻烦,我这里是想在编译脚本里面对版本号进行修改,这样方便一点。 二、主要修…

实验三十二、OCL电路的研究

一、题目 仿真电路如图1所示。利用 Multisim 研究下列问题: (1)负载 R 6 R_6 R6​ 上能获得的最大输出功率; (2)电容 C 1 C_1 C1​、 C 2 C_2 C2​ 的作用; (3)当输入…

基于ebpf的性能工具-bpftrace实战(内存泄漏)

在之前的篇章中,我们已经详细阐述了bpftrace的操作原理,以及其脚本语法的特点。在本文中,我们将通过实际案例展示bpftrace这一强大工具的实际应用,以便更加深入地理解其在解决问题中的价值。 基于ubuntu22.04-深入浅出 eBPF 基于e…

Python测试框架 Pytest —— mock使用(pytest-mock)

pytest-mock 安装:pip install pytest-mock 这里的mock和unittest的mock基本上都是一样的,唯一的区别在于pytest.mock需要导入mock对象的详细路径。 # weateher_r.py class Mock_weather():def weather(self):天气接口passdef weather_result(self):模…

内网穿透:FRP(Forwarding Remote Proxy)反向代理

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透 下载地址 https://github.com/fatedier/frp/releases 选择最新的就行,linux和windo…

TCP机制之连接管理(三次握手和四次挥手详解)

TCP的连接管理机制描述了连接如何创建以及如何断开! 建立连接(三次握手) 三次握手的过程 所谓建立连接就是通信双方各自要记录对方的信息,彼此之间要相互认同;这里以A B双方确立男女朋友关系为例: 从图中可以看出,通信双方各自向对方发起一个"建立连接"的请求,同时…

Spring Security 安全框架NOTE

目录 1、什么是 Spring Security 安全框架? 2、关于 SpringSecurity 中的认证 3、关于 SpringSecurity 中的授权 3.1 从数据库中查询用户的权限信息 4、关于自定义失败处理 5、跨域问题 前提引入: 随着科技的完善,现在几乎所有的网站以及软件都需…

为大模型添加记忆体,GBASE南大通用驶入向量赛道

大数据产业创新服务媒体 ——聚焦数据 改变商业 理解、生成、逻辑、记忆是人工智能的四大核心能力。 一段人类的日常对话通常可以分解为引子、记忆、分析三个部分。计算机自然语言处理的解法,AI科学家归纳出一个CPV结构:以ChatGPT为代表的大模型承担“分…

Vmware 网络恢复断网和连接

如果你的 虚拟机无法联网了,比如: vmware 无法将网络更改为桥接状态: 没有未桥接的主机网络适配器 等各种稀奇古怪的问题; 按照下面操作 还远默认设置 包你解决各种问题!

Pycharm----将Anaconda建立的环境导入

首先打开项目设置,点击添加 随后点击现有环境,点击三个。。。号进行添加 最后找到你Anaconda安装文件夹,envs找到你建立的环境名称,找到python.exe将它导入即可让现在的python环境为你建立的环境,同时还需要更改终端方…

接口自动化测试系列-接口测试

接口测试工具-postman 利用postman完成接口测试:官网。 接口一般包含: url:请求地址,如:https://www.baidu.com/ method:请求方式,get,post,update,delete等 headers:请求头 body/params:请求体,post一般存在body中。get请求放在…

苹果手机隔空投送怎么用?隔空投送的使用教程来了!

如何实现苹果设备之间快速高效地传输各种数据?相信我,使用【隔空投送】是大家的不二选择。苹果手机的【隔空投送】功能,即大家口中常说的“Airdrop”,能够让苹果用户实现近距离传输照片、视频、文件等。苹果手机隔空投送怎么用&am…

安科瑞电能质量监测与治理系统的解决方案-安科瑞黄安南

01 电能质量问题及现象 02 电能质量标准及选型 03 安科瑞电能质量产品及服务 04 经典案例分析

实现卓越供应链:RFID技术的革命性应用

在现代制造业中,供应链和物流的高效运作至关重要,它不仅影响着生产效率,还直接关系到企业的竞争力和客户满意度。为了应对这些挑战,越来越多的企业开始关注智能制造RFID智能设备,将其应用于供应链和物流管理&#xff0…

在OpenStack私有云上安装配置虚拟机

文章目录 零、学习目标一、登录大数据实训云二、创建网络三、创建路由四、添加接口五、创建端口六、添加安全组规则七、创建实例(一)实例规划(二)创建实例 - ied(三)创建实例 - master、slave1与slave2&…

Cesium 根据鼠标点击生成点击点的坐标信息

Cesium 根据鼠标点击生成点击点的坐标信息 一、需求二、分析1. 创建鼠标点击事件2. 点击生成坐标但不是经纬度,而是笛卡尔坐标系下的坐标,这个时候需要做一次转换3. 完整代码 三、数据保存 一、需求 在日常开发中 ,会遇到根据鼠标点击生成对应…

MindSponge分子动力学模拟——使用迭代器进行系统演化(2023.09)

技术背景 在前面几篇博客中,我们已经介绍过使用MindSponge去定义一个系统以及使用MindSponge计算一个分子系统的单点能。这篇文章我们将介绍一下在MindSponge中定义迭代器Updater,并使用Sponge对系统进行演化,最后使用CallBack对输出结果进行…

Spring——Spring的控制反转IOC

摘要 IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;…