JS数据类型的探究

news2025/7/10 20:28:58

JS数据类型的探究

分思考三部曲?

  1. 是什么?
  2. 为什么?
  3. 怎么做?

一:什么是数据类型?

在程序设计的类型系统中,数据类型(英语:Data type),又称资料型态资料型别,是用来约束数据的解释。在编程语言中,常见的数据类型包括原始类型(如:整数、浮点数或字符)、多元组、记录单元、代数数据类型、抽象数据类型、参考类型、类以及函数类型。数据类型描述了数值的表示法、解释和结构,并以算法操作,或是对象在存储器中的存储区,或者其它存储设备。(摘自维基百科)

js的数据类型有哪些?

二:为什么要定义数据类型?

基本类型直接代表了最底层的语言实现,用来约束数据。

三:怎么创建数据类型或者怎么使用数据类型?

创建数据(使用):

const num = 1 (常用,最简洁)
const num1 = new Number(1) (不推荐,实际编码用的很少)
const num2 = Number('233') (强制转换类型时候用到)

const theBiggestInt = 9007199254740991n; (整数字面量后面加上n的方式定义一个BigInt)
const alsoHuge = BigInt(9007199254740991);

const str = '123'
const str1 = new String('123') (不推荐,实际编码用的很少)
const str2 = String(233) (强制转换类型时候用到)

// 布尔值只有两个值 true 和 false
const flag = true (常用)
// 以下是布尔值注意点:
const x = new Boolean(false);
if (x) {
  // 这里的代码会被执行
}
const x1 = false;
if (x1) {
  // 这里的代码不会执行
}

// symble
const symbol = Symbol('foo');
console.log(Symbol('foo') === Symbol('foo')); // false

// undefined  以下两个语句是一样的
var a 
var a = undefined
console.log(a === undefined) // true

// null
var b = null
console.log(b === null) // ture
// undefined 和 null 的原始值是唯一的,可以比较判断

// 创建对象 可以通过构造函数形式 或者 字面量的形式
// object
const obj = {name: 'zhangsan', age: 18}
const obj1 = new Object({name: 'zhangsan', age: 18})

// date
const date = new Date()

// array
const arr = [1, 2, 3, 4]
const arr1 = new Array(1, 2, 3, 4)

// 匿名函数
(function () {}) 
const btn = document.getElementById("btn")
btn.onclick = function () {
    alert("我是按钮的点击事件")
}

// 函数表达式
const fun = function () {
    console.log('我是一个函数的表达式')
}
fun() //调用

// 对象属性形式
const person = {
    name: '张三',
    age: 18,
    hobby: function() {
        console.log('爱好敲代码!')
    }
}
person.hobby()

//回调函数
const nums = [1, 3, 5, 7, 9]
const newNums = nums.map(function(item) {
    return item + 1
})
console.log(newNums) // [2, 4, 6, 8, 10]

// 函数返回值 将函数作为一个返回值 可再调用
function sum(a) {
    return function (b) {
        return a + b
    }
}
const total = sum(1)(2)
console.log(total)

延伸

如何判断数据类型?

  • typeof:typeof 运算符返回一个字符串,表示操作数的类型。
    typeof 1                           // "number"
    typeof 'zhangsan'                  // "string"
    typeof true                        // "boolean"
    typeof abcd                        // "undefined"
    typeof Symbol('lisi')              // "symbol"
    typeof function(){}                // "function"
    typeof null                        // "object"
    typeof {}                          // "object"
    typeof []                          // "object"
    
  • instanceof:instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上,返回布尔值,只用来检测对象数据类型。
    语法: object instanceof constructor
    参数: object为某个实例对象  constructor为某个构造函数
    以下为window内置对象,类似Array,Object,Function都是内置构造函数(别称: 内置对象 || 函数对象)
    
    [] instanceof Array                // true
    [] instanceof Object               // true
    {} instanceof Object               // true
    function(){} instanceof Function   // true
    function(){} instanceof Object     // true
    null instanceof Object             // true
    
    // new 构造函数的举例:
    function Person(name, age) {
    	this.name = name
    	this.age = age
    }
    const zhangsan = new Person('张三', 18) // Person {name: '张三', age: 18}
    zhangsan instanceof Person // true
    
  • constructor:所有对象(使用 Object.create(null) 创建的对象除外)都将具有 constructor 属性
    语法:object instanceof constructor
    参数:object为某个实例对象  constructor为某个构造函数
    
    const n = 1
    const m = '123'
    const flag = true
    const sym = Symbol('bian')
    const obj = {}
    const array = []
    const fun = function () {}
    
    n.constructor === Number       // true
    m.constructor === String       // true
    flag.constructor === Boolean   // true
    sym.constructor === Symbol     // true
    obj.constructor === Object     // true
    array.constructor === Array    // true
    fun.constructor === Function   // true
    array.constructor === Object   // false
    fun.constructor === Object     // false
    
  • Object.prototype.toString():toString() 方法返回一个表示该对象的字符串。
    // Object.prototype.toString() 返回 "[object Type]"
    
    Object.prototype.toString.call(null)          // "[object Null]"
    Object.prototype.toString.call(undefined)     // "[object Undefined]"
    Object.prototype.toString.call(1)             // "[object Number]"
    Object.prototype.toString.call('str')         // "[object String]"
    Object.prototype.toString.call({})            // "[object Object]"
    Object.prototype.toString.call([])            // "[object Array]"
    Object.prototype.toString.call(Symbol(666))   // "[object Symbol]"
    Object.prototype.toString.call(function(){})  // "[object Function]"
    

补充

字面量:

在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。几乎所有计算机编程语言都具有对基本值的字面量表示,诸如:整数、浮点数以及字符串;而有很多也对布尔类型和字符类型的值也支持字面量表示;还有一些甚至对枚举类型的元素以及像数组、记录和对象等复合类型的值也支持字面量表示法。(摘自百度百科)

​ 简单理解就是赋值等号的右边,例如:

var a = 'hello world'   字面量就是'hello world'
var obj = {name: 'xiaoming', sex: 'male'}   字面量就是{name: 'xiaoming', sex: 'male'} 

内置对象(JavaScript 标准内置对象):

这里的术语"全局对象"(或标准内置对象)不应与global 对象混淆。这里的"全局对象"指的是处在全局作用域里的多个对象

global 对象可以在全局作用域里通过使用this访问到(但只有在 ECMAScript 5 的非严格模式下才可以,在严格模式下得到的是 undefined)。其实全局作用域包含全局对象中的属性,包括它可能继承来的属性。

全局作用域中的其他对象则可由用户的脚本创建,或由宿主程序提供。浏览器环境中所提供的宿主对象的说明可以在这里找到:API 参考。

Object/Function/Boolean/Symbol/Number/Array/Promise等都是内置对象(别称:构造函数/函数对象/基类),js全局作用域的this常指的是window
在这里插入图片描述

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

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

相关文章

我去面试聊了半天MySQL索引,结果面试官黑脸让我回家等结果...

V-xin:ruyuanhadeng获得600页原创精品文章汇总PDF 目录 1、面试真题2、面试官心理分析3、面试题剖析 1、面试真题 MySQ索引的原理和数据结构能介绍一下吗?b树和b-树有什么区别?MySQL聚簇索引和非聚簇索引的区别是什么?他们分别是…

影响网站排名的4个因素,教你提高网站排名的方法

我们优化网站的目的是,使网站的排名靠前,让更多的用户看到并访问网站,达到营销的效果。网站排名靠前,可以提高企业品牌的知名度,对网站是非常有益的。在网络多变的环境下,影响网站排名有哪些因素呢&#xf…

JAVA使用springboot整合佳博标签打印机(三)

在JAVA使用springboot整合佳博标签打印机(二)的文章中使用的是花生壳进行的内网穿透 花生壳内网穿透会有异常情况,因为使用的是花生壳免费版本的内网穿透,可能会有服务异常的情况出现,免费服务没有保障 优化方案使用NGINX替换花生壳来实现内网穿透 准…

从头开始实现一个留言板-README

前言 仓库地址:da1234cao/RestFulAPIDemo 由于我没做过C服务器的开发,没有这方面的工程经验,所以代码中,大概率有一些我意识不到的问题,欢迎提issue。 PS: 代码使用C实现restful接口,给前端提供数据读取…

如何封装一个实用的上传组件

前言 马上放假了,时间上相对宽裕,对最近做的东西进行一些总结。今天我们来看一个非常实用的组件,上传组件 我们先从组件的定位、组件的应用场景、组件的特性几个方面进行归纳 定位: 对于上传组件,基础的组件功能属…

【C++】-- 继承

目录 继承的概念及定义 继承的概念 继承的定义 定义格式 继承基类成员访问方式的变化 基类和派生类对象赋值转换 子类对象可以赋值给父类对象/指针/引用 派生类对象赋值给基类的对象 派生类对象赋值给基类的指针 派生类对象赋值给基类的引用 继承中的作用域 派生类的默认成员函…

IM开源项目OpenIM部署文档-从准备工作到nginx配置

IM开源项目OpenIM部署文档-从准备工作到nginx配置 2022-11-14 22:27OpenIM 一、准备工作 运行环境 linux系统即可, Ubuntu 7.5.0-3ubuntu1~18.04最优 图片视频文件存储 支持cos/MinIO https/wss协议 1. 需申请域名或者子域名(web im端登录注册及im…

C# HTML

一 HTML 超文本标记语言 在HTML当中存在着大量的标签,我们用HTML提供的标签,将要显示在网页中的内容包含起来。就构成了我们的网页。 二 CSS CSS 控制网页内容显示的效果。 HTMLCSS静态网页。 JSJquery 动态效果。 三 开始动手写HTML页面 ① 首先在…

XSS进阶二

目录实验目的预备知识实验环境实验步骤一实例四、换一个角度,阳光依旧实验步骤二实例五、限制了我的左手,我还有右手实验步骤三实例六、大胆去思考,小心去求证实验目的 1.深入理解xss工作原理。 2.怎么去绕过规则实现xss。 3.培养学生的独立…

Spring Cloud(十):Spring Cloud Skywalking

链路追踪组件选型 Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件&…

XCTF-web Robots

场景一:Training-WWW-Robots 进入场景,提示关于robots.txt文件 访问robots.txt文件,目录下存在 /fl0g.php 文件,进一步访问得到flag 场景二:robots 根据题目,提示关于robots.txt协议 访问成功&#xff…

api股票数据接口能实现什么功能?

api股票数据接口在量化投资方面能够受到比较多交易者的开发和使用的,主要是得于股票量化交易数据接口的7个策略十档行情,可以实现一键解决炒股难题,和多指标辅助追踪主力,跟主力做强势股,只有在行股票数据接口一键就可…

零样本图像分类综述

零样本图像分类综述 摘要 零样本图像分类指训练集和测试集在数据的类别上没有交集的情况下进行图像分类,该技术是解决类别标签缺失问题的一种有效手段,因此受到了日益广泛的关注,自提出问题至今。零样本图像分类研究已经大致有十年时间啦。…

学完 Fluent 官方基础教程,你离一名合格Fluent 流体工程师还有多远?

作者 | 张杨 仿真秀专栏作者 Fluent软件的学习包含基础部分和进阶部分,通常我们学习Fluent软件,都是从一个最简单的三通管开始的。 图1 Fluent的标准初学案例——三通管混合换热 ANSYS Fluent官方的基础培训课程表,通常只包括以下几个方面…

堆排序在topK场景题中的应用及原理

参考以下文章: 堆排序(大顶堆、小顶堆)----C语言 006 查找第k大的数——堆结构的初应用寻找最大的K个数,Top K问题的堆实现海量数据查找最大的前k个数(小顶堆) 零、先简单说下处理topK问题的答案: 一般我们说 topK 问…

如此简单易懂的方式 让网站支持PWA

总结起来,网站配置PWA简单步骤为: 1.编写 manifest.json; 2.编写 serviceWorker.js; 3.在 index.html 引入上述两个文件; 4.把上述三个文件放在网站根目录(或者同一目录下); 5.网站需要部署在https环境才能…

mannose-PEG-Alkyne|甘露糖-聚乙二醇-巯基|巯基修饰甘露糖

mannose-PEG-Alkyne|甘露糖-聚乙二醇-巯基|巯基修饰甘露糖 中文名称:甘露糖-巯基 英文名称:mannose-SH 别称:巯基修饰甘露糖,巯基-甘露糖 西安齐岳生物还可以提供PEG接枝修饰甘露糖,mannose-PEG-Alkyne 甘露糖-聚乙…

Android App开发实战项目之给用户推荐旅游信息图片(附源码 简单易懂)

需要全部源码请点赞关注收藏后评论区留言~~~ 一、需求描述 假定用户打开一个旅游App想看看哪里风景比较优美,那么App应当展示各地的风景名声图片,为了让界面不太呆板,可以考虑交错显示风景图片,接着用户向下拉动页面,…

【ROS】机械人开发二--ROS环境安装

机械人开发二--ROS环境安装一、运行环境二、ROS-melodic安装2.1 设置软件源2.2 设置密钥2.3 安装ROS2.4 环境设置2.5 安装ROS的依赖环境2.6 初始化rosdep三、建立工作空间测试一、运行环境 树莓派4B-4G、VMware15系统都为ubuntu18.04xshell 使用时,通过xshell同时…

10-1.WPF模板

10-1.WPF模板 控件由“算法内容”和“数据内容”决定 算法内容:指控件能展示哪些数据、具有哪些方法、能激发什么事件等,简而言之是控件的功能,一组相关逻辑数据内容:控件所展示的具体数据是什么 在WPF中,模板将数据…