首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS对象到原始转换

JS对象到原始转换复杂性 主要由于某些对象类型存在不止一种原始表示 对象到原始转换三种基本算法 在解释三种算法前需要了解toString valueOf这两个方法 toString...返回对象字符串表示 Array类toString方法会将每个元素转换为字符串,再使用逗号作为分隔符拼接起来 Function类toString方法将定义函数转换为JS源代码字符串 Date类型...toString方法返回一个人类友好(且JS可解析)日期和时间字符串 RegExp类定义toString方法将RegExp对象转换为一个看起来像RegExp字面量字符串 valueOf 把对象转换为代表对象原始...否则,转换失败 TypeError 偏数值 (该算法返回原始,只要可能就返回数值) 与偏字符串算法类似,先尝试valueOf再尝试toString 无偏好 (该算法不倾向于任何原始类型,而是由类定义自己转换规则...) 取决于被转换对象类 如果是Date对象,则使用偏字符串算法 其他类型使用偏数值算法 JS内置类型除了Date类都实现了偏数值算法;Date类实现了偏字符串算法 对象转换为布尔 所有对象都转换为

4.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

原始和复杂

作者:汪娇娇 日期:2016.10.12 一、原始 1、定义:本身很简单,不能由其他组成,例如5、“foo”、true、null和undefined等,因为它们是不可细化。...从逻辑上说,如果将一个包含数值10变量和另一个包含数值10变量进行比较,JS认为它们是相等,因为10与10是相等(即10===10),原始字符串比较也是如此。...下面的例子顺带比较下复杂原始区别: <!...console.log(num3===num4);//输出true,因为复杂对象采用引用比较(即:地址比较),而不是比较 二、复杂 1、定义:可以包含一个或多个原始或复杂类型...例如原生对象构造函数Object()、Array()、Function()等,如下创建了一个包含所有原始对象和一个包含所有原始数组。 <!

54120

攀爬TS之路(一) 原始数据类型、任意类型

攀爬TS之路(一) 原始数据类型、任意类型 前言 之前简单了解过TypeScript,但是没有系统、深入学习,现在就来系统学习一下。...如1+'1'不会报错 TS和JS都是弱类型 console.log(2 + '1') 在TS和JS中都不会报错,因为TS是完全兼容JS,不会修改JS运行时特性,所以它们都是弱类型。...原始数据类型 原始数据类型包括:number、string、boolean、null、undefined和Symbol、BigInt(ES6新增) 这个部分实际上,TS和JS差别不大,举个例子就能懂了。...,那么对它操作,返回结果类型都是任意,而且任意也就意味着有可能会是对象,所以是没法在编译时暴露出错误。...另外,除了上面声明时指定类型情况,如果变量在声明时,没有指定它类型,也没有被赋值,那么就会被识别成任意类型

65130

js类型和引用类型区别

js类型和引用类型区别 1.JavaScript中变量类型有哪些?...(1)类型(基本类型):字符串(string)、数值(number)、布尔(boolean)、undefined、null (这5种基本数据类型是按访问,因为可以操作保存在变量中实际)(...几方面的区别举例: (1)动态属性: 定义基本类型和引用类型方式是类似的。但是,当这个保存到变量中以后,对不同类型可以执行操作则大相径庭。...对于引用类型,我们可以为其添加属性和方法,也可以改变和删除其属性和方法,但是,我们不能给基本类型添加属性,只能给引用类型动态地添加属性,以便将来使用。...但是,当接下来再访问 person.name 时,显示仍然是"Nicholas"。 这说明即使在函数内部修改了参数,但原始引用仍然保持未变。

3.4K20

原始和复杂

作者:汪娇娇 日期:2016.10.12 一、原始 1、定义:本身很简单,不能由其他组成,例如5、“foo”、true、null和undefined等,因为它们是不可细化。...从逻辑上说,如果将一个包含数值10变量和另一个包含数值10变量进行比较,JS认为它们是相等,因为10与10是相等(即10===10),原始字符串比较也是如此。...下面的例子顺带比较下复杂原始区别: <!...console.log(num3===num4);//输出true,因为复杂对象采用引用比较(即:地址比较),而不是比较 二、复杂 1、定义:可以包含一个或多个原始或复杂类型...例如原生对象构造函数Object()、Array()、Function()等,如下创建了一个包含所有原始对象和一个包含所有原始数组。 <!

90960

JavaScript 原始和引用讲解

引用数据类型,就只有 1 种: object 基本数据类型又被称之为原始或简单,而引用数据类型又被称之为复杂或引用。 那么两者之间具体有什么区别呢?我们一点一点来看: 1....简单原始) 简单是表示 JavaScript 中可用数据或信息最底层形式或最简单形式。简单类型被称为简单,是因为它们是不可细化。...但是,JavaScript 数据类型分成原始类型(primitive)和复合类型(complex)两大类,作者觉得表示“无”最好不是对象。...引用数据类型,就只有 1 种: object 基本数据类型又被称之为原始或简单,而引用数据类型又被称之为复杂或引用。...两者区别在于: 原始是表示 JavaScript 中可用数据或信息最底层形式或最简单形式。简单类型被称为原始,是因为它们是不可细化

96510

原生JS | 类型与引用类型变量

HTML5学堂-码匠:在JavaScript中,存在着两种不同变量类型,一种是类型变量,一种是引用类型变量。...其中数组、对象、函数都属于引用类型变量,数值、布尔、null、undefined、字符串属于类型变量,不同类型变量在参数传递方面有不同运行机制。...:类型和引用类型。...不同类型数据在“赋值”时机制并不相同。 欢迎沟通交流~~~HTML5学堂(码匠) 类型变量 类型包括:数值、布尔、null、undefined、字符串。...对于类型变量,变量交换(将一个变量赋值给另一个变量)相当于是创建了一个新空间,把原有的变量值复制一份,并将其存储在新空间当中,新空间与之前空间互不影响。

3.4K90

JavaScript-原始和引用

一、原始和引用概念 在 ECMAScript 中,变量可以存在两种类型,即原始和引用。...1.1 原始 (1)原始指的是 原始类型 ,也叫 基本类型,例如 Number、Stirng、Boolean、Null、Underfined 。...二、栈和堆 2.1 原始存储在栈中 为变量赋值时,ECMAScript 解释程序必须判断该原始类型,还是引用类型。...由于这些原始类型占据空间是固定,所以可将他们存储在较小内存区域 - 栈中。这样存储便于迅速查寻变量。 2.2 引用存储在堆中 如果一个是引用类型,那么它存储空间将从堆中分配。...五、比较方式不同 5.1 原始比较是 比较 5.2 引用比较是 引用 比较 5.3 Example ? 5.4 说明 (1)原始 a 和 b 数据类型不同,但也可以进行比较。

94251

4.1 红宝书 📒 原始与引用

原始与引用 原始:最简单数据 (Undefined、Null、Boolean、Number、String、Symbol)。我们操作就是存储在变量实际 引用:多个构成对象。...是保存在内存中对象。Js不允许直接访问内存位置,不能直接操作对象所在内存空间。实际操作是对该对象引用。 动态属性 原始和引用定义 都是创建一个变量,然后给它赋值。...,如果使用new关键字,则javaScript创建一个Object类型实例,但其行为类似原始 let obj = new String("font") obj.name = "objName" console.log...,但是上面这个引用例子,在函数内部给obj添加name属性,函数外部对象也会反映这个变化,就感觉引用类型参数是按引用传递。...ECMAScript中函数参数就是局部变量 确定类型 typeof适用于原始类型,对于引用只能判断出是object类型。但是我们通常要知道是什么样对象。

35610

复杂vs原始&&内存空间

那么我们先来聊一下JavaScript原始类型)以及复杂(引用类型),以及他们在内存空间中存储,关于他们你可能不清楚一些事:      我们先通过一个经典面试题类型(并不是原题,我即兴发挥...事实上,原始存储在栈内存中,按来访问。复杂(引用类型)在堆内存里面,按引用地址访问;然后我们会想到局部变量和全局变量在内存中存储:下面是我在一个群中给一个同行回答(前辈们莫见笑) ?...1、原始是非对象 我们老生常谈JavaScript五大基本数据类型,null、undefined、number、string、boolean都被视为原始,因为他们是不可细化,本身是简单,不能表示由其他组成...这里重点是,原始是作为不可细化进行存储和操作,引用他们会转移其:这里意思也就是原始类型)在内存中每一个都会存储在对应变量中去,也就是一个真实”复制”。   ...写在后面 相信到这里我们对js原始、复杂、以及他们特性、在内存中存储有了比较深入理解,那么让我们开始准确我们JavaScript世界观系列,因为我从高中毕业后接触前端,对原生热爱程度远远大于

82470

JavaScript 原始与包装对象

---- 正文 原始类型 (Primitive types) 原始类型也被称为“基本类型”。...在 JavaScript 最初实现中,JavaScript 中是由一个表示类型标签和实际数据表示。对象类型标签是 0。...The history of “typeof null”:https://2ality.com/2013/10/typeof-null.html 原始 (Primitive values) 原始也就是原始类型...原始是一种没有任何方法非对象数据。 也就是说,string、number 和 boolean 等原始类型本身是没有任何属性和方法。...最后我们来总结一下: 多数原始类型都有相应包装对象; 有些包装对象可以被 new,有些不行; 包装对象一般被用来进行显式类型转换; 对象上有属性和方法; 原始上没有属性和方法; 原始上也不能有属性和方法

83510

JavaScript 原始与包装对象

--- 正文 原始类型 (Primitive types) 原始类型也被称为“基本类型”。...在 JavaScript 最初实现中,JavaScript 中是由一个表示类型标签和实际数据表示。对象类型标签是 0。...The history of “typeof null”:https://2ality.com/2013/10/typeof-null.html 原始 (Primitive values) 原始也就是原始类型...原始是一种没有任何方法非对象数据。 也就是说,string、number 和 boolean 等原始类型本身是没有任何属性和方法。...最后我们来总结一下: 多数原始类型都有相应包装对象; 有些包装对象可以被 new,有些不行; 包装对象一般被用来进行显式类型转换; 对象上有属性和方法; 原始上没有属性和方法; 原始上也不能有属性和方法

91040

TypeScript 原始数据类型

简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型 Snipaste_2021-05-18_14-09-22.jpg TypeScript 中数据类型分为两大类 原始数据类型(基本数据类型...任意类型 unknown * 类型安全any void 空(undefined) 没有(或undefined) never 没有 不能是任何 object (name: '罗') 任意 js...对象 array 1, 2, 3 任意 js 数组 tuple 4, 5 元组,TS 新增类型,固定长度数组 enum enum(A, B) 枚举,TS 中新增类型 在 ES6 和 ES10 中引入了新基本数据类型...,分别是 Symbol 和 BigInt 原始数据类型 数字类型 使用关键字number定义数字类型 let decimal: number = 6.1; // 小数 let hex: number...; // 声明但未赋值变量值(找不到) Null类型 表示对象缺失 let nu: null = null; // 声明并已赋值(能找到,就是null) Undefined类型 用于初始化变量为一个未定义

77350

TypeScript 中基础类型原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型

TypeScript 强大类型系统使得开发者能够更轻松地编写可维护、可扩展代码。本文将详细介绍 TypeScript 中基础类型,包括原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型。...原始类型在 TypeScript 中,有以下几种原始类型:数字类型数字类型用于表示整数或浮点数。可以使用 number 关键字来声明数字变量。...例如:let isTrue: boolean = true;空和未定义类型类型 (void) 用于表示没有返回函数。未定义类型 (undefined) 用于表示未赋值变量。...例如:let nothing: null = null; // 空类型let nul: null = null; // 空类型对象类型对象类型用于表示非原始数据类型,包括对象、数组、函数等。...总结本文详细介绍了 TypeScript 基础类型,包括原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型等方面。

29230

深入理解面向对象中原始类型和引用类型

引用类型 引用类型数据指的是JS对象,类似于其他编程语言中类。对象是由一系列键值对(属性名和属性)组成无序列表。...原始包装器类型也是引用类型,当字符串,数字或布尔被读取时候,原始包装器类型会自动在后台创建。...总结 JavaScript没有类,但是它有类型,分为原始类型和引用类型原始类型直接被保存在变量中,引用类型并不是直接保存变量中,变量中保存仅仅是引用类型所在内存地址。...在检测原始类型时,除了null以外,其他原始类型都可以使用typeof操作符。null必须跟特殊null进行比较(value === null)。...为了使我们在操作原始类型数据时候更加方便,JavaScript允许原始类型使用方法。

1.3K30

JavaScript 原始数据类型转换

Js基础数据类型有7种: 原始数据类型(6种) number (数值) string (字符串) boolean (布尔) null (空对象, typeof 检测为object) undefine...(未定义) symbol (符号类型) 对象数据类型(1种) object(对象类型) 补充: NaN表示 not a number; function本质为 object, 但由于其特殊地位..., typeof会检测为 function; symbol 为ECMAScript6 新定义数据类型, 符号类型是唯一并且是不可修改, 并且也可以用来作为Objectkey 转换为字符串...转换为布尔 // 布尔类型转换 // 除零以外数字, 非空字符串 都为 true console.log(Boolean(1)) console.log(Boolean(-1)) console.log...快速获取boolean小技巧: 在变量前添加2个!,示例!!("zhaozhao") === true; 和 !!("") === false ?

78320

swift 枚举(枚举关联、枚举原始、递归枚举等)

Swift 枚举可以用来存储任意类型关联 声明存储不同类型关联枚举成员(这个定义不提供任何Int或String类型关联) 一个成员是(Int,Int,Int)类型关联num 一个成员是...枚举成员可以设置原始,这些原始类型必须相同 enum Season:String { case spring = "A" case summer = "B" case autumn...原始是在定义枚举时被预先填充。对于一个特定枚举成员,它原始始终不变。关联是创建一个基于枚举成员常量或变量时才设置,枚举成员关联可以变化。...原始隐式赋值 当使用整数作为枚举成员原始时,隐式赋值依次递增1 enum Season:Int { case spring = 1 case summer case...autumn case winter } 当使用字符串作为枚举类型原始时,每个枚举成员隐式原始为该枚举成员名称 enum Season:String { case spring

17210

《你不知道JavaScript》:js常见类型

再来看下js类型。 常见类型有数组(array)、字符串(string)、数字(number)等。 js数组可以容纳任何类型,可以是字符串、数字、布尔、对象甚至也可以是数组。...对数组声明后即可向其中加入,无需预先设定大小。这里有个小注意点,虽然可以用delete关键字来将单元从数组中删除,但单元删除后,数组length属性并不会发生变化。...在创建稀疏数组(即含有空白或空缺单元数组)时,其中空白单元为undefined,但与将该单元显式赋值为undefined是有微妙区别的,这里注意。 类数组可以通过数组工具函数转换成数组。...再来看字符串,字符串也是一种类数组,也有length属性,也有一些和数组一样方法如indexOf()和concat()方法等。js字符串是不可变,而数组是可变。...字符串不可变是指字符串成员函数不会改变其原始,而是创建并返回一个新字符串。而数组成员函数都是在其原始上进行操作

71730
领券