;// 尝试使用普通字符串作为键来访问该属性会失败console.log(obj['mySymbol']); // undefined,因为属性键是 symbol 类型,不是字符串// 使用正确的 symbol...元组类型元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同,限定了个数,顺序也需要保持一致let arr:[number:string]=[1,'hello'];7、对象类型直接字面量当你有一个具有确切属性名和类型的对象时...当看到函数的返回类型是 void 时,这意味着这个函数不返回任何值(或者更确切地说,它返回 undefined)。...(Const Enum)const枚举与普通枚举的主要区别在于它们在编译时的处理方式。...当使用const枚举时,TypeScript编译器会在编译时尽可能地消除对枚举的引用,并直接内联枚举成员的值。这可以提高性能,并减少生成的代码大小。
独立的特殊值 当 undefined、函数和 Symbol 被独立序列化时,JSON.stringify 会直接返回 undefined。...并不会返回 JSON 字符串,而是直接返回 undefined,表示这些值无法被序列化。...自定义序列化结果 当一个对象包含 toJSON() 方法时,JSON.stringify 会调用这个方法,并使用其返回值作为最终的序列化结果。...Symbol 属性的序列化 当对象的属性使用 Symbol 作为键时,JSON.stringify 会忽略这些属性,不会将它们包含在序列化结果中。..." 解释:在这个例子中,replacer 函数试图检查 Symbol 类型的键并返回其值,但 JSON.stringify 仍然忽略了该属性,结果为undefined。
出现场景:null是原型链最顶端的元素、当字符串中没有匹配到正则表态式的结果时 检测:if(x===null) D.原始值的包装对象 1.布尔值、数字和字符串这三种原始值都有相应的构造函数:Boolean...2.严格相等 比较两个对象:当且仅当x和y是同一个对象时,x===y; NaN和本身不相等 3.普通(宽松)相等(==,!=) 相等和转换为布尔值的工作原理是不同的。...(枚举属性与非枚举属性) E.属性特性和属性描述符 1.属性特性是属性的原子构建块,具有[[Value]]、[[Writable]]、[[Get]]、[[Set]]、[[Enumerable]]、[[Configurable...(key):如果this拥有键为key的属性,则返回true Object.prototype.propertyIsEnumerable(propKey):如果接收者具有键为propKey的可枚举属性...3.ECMAScript规范的索引解释: 属性键P(字符串)是某个数组的索引当且仅当ToString(ToUnit32(P))等于P且ToUnit32(P)不等于2^32-1 数组属性的键是数组索引,
列出自有属性键 您可以列出所有自有属性键,或仅列出可枚举的属性键: Object.getOwnPropertyNames(obj)返回obj的所有自有属性的键。...Object.keys(obj)返回obj的所有可枚举自有属性的键。 请注意,属性通常是可枚举的(参见可枚举性:最佳实践),因此您可以使用Object.keys(),特别是对于您创建的对象。...默认值 如果您不指定属性,则使用以下默认值: 属性键 默认值 [[值]] undefined [[获取]] undefined [[设置]] undefined [[可写]] false [[可枚举]]...引用第 15.4 节的话来说: 如果且仅当ToString``(ToUint32(P))等于P且ToUint32(P)不等于 2³²−1 时,属性键P(一个字符串)才是数组索引。...引用文本 有时,当手动组装正则表达式时,您希望逐字使用给定的字符串。这意味着不能解释任何特殊字符(例如,*,[)-所有这些字符都需要转义。
就不要让我再说重音字符排序规则了。当你创建一个 MongoDB 数据库时,使用一种合乎系统 用户语言和文化 的 重音敏感、大小写敏感 排序规则。这使得字符串数据的检索容易许多。...当一个包含大数组的文档重新索引时,由于 每个数组元素都有一个单独的索引条目 ,所以会发生大量的索引重写。此外,这种重新索引在这类文档插入或删除时也会发生。...当没有合适的索引可用时,MongoDB 就不得不在没有索引的情况下排序。...为了获得良好的性能,作为外键的键值上需要有索引。这并不明显,因为其使用并没有在 explain() 中报告。...在 MongoDB 中,要避免使用“undefined”。 使用$limit() 而未用$sort() 通常,当你在 MongoDB 中开发时,仅仅查看查询或聚合返回的结果的样例会很有用。
引擎创建的值 可能返回任意的字符串 null 返回的是一个 object,这个是一个不可修复的 bug,如果修改这个 bug,就会破坏现有代码体系。...String 字符串比较符,是无法比较变音符和重音符的。 'ä' < 'b' <false 'á' < 'b' <false 五. Array 创建数组的时候不能用单个数字创建数组。...对象的引用都是弱引用,所以不能引用 WeakSet 的成员,不可遍历它(因为遍历的过程中随时都可以消失) Map 类似于对象,键值对的集合,键的范围不限于字符串,各种类型都可以,是“值—值”的映射,这一点区别于对象的...) 返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包含不可枚举的属性) Object.getOwnPropertySymbols(obj) 返回一个数组,包含对象自身的所有 Symbol...属性 Reflect.ownKeys(obj) 返回一个数组,包含对象自身的所有属性,不管属性名是 Symbol 或者字符串或者是否可枚举 Reflect.enumerate(obj) 返回一个 Iterator
引擎创建的值 可能返回任意的字符串 null 返回的是一个 object,这个是一个不可修复的 bug,如果修改这个 bug,就会破坏现有代码体系。...String 字符串比较符,是无法比较变音符和重音符的。 'ä' < 'b' <false 'á' < 'b' <false复制代码 五. Array 创建数组的时候不能用单个数字创建数组。...对象的引用都是弱引用,所以不能引用 WeakSet 的成员,不可遍历它(因为遍历的过程中随时都可以消失) Map 类似于对象,键值对的集合,键的范围不限于字符串,各种类型都可以,是“值—值”的映射,这一点区别于对象的...) 返回一个数组,包含对象自身的所有属性(不含 Symbol 属性,但是包含不可枚举的属性) Object.getOwnPropertySymbols(obj) 返回一个数组,包含对象自身的所有 Symbol...属性 Reflect.ownKeys(obj) 返回一个数组,包含对象自身的所有属性,不管属性名是 Symbol 或者字符串或者是否可枚举 Reflect.enumerate(obj) 返回一个 Iterator
就不要让我再说重音字符排序规则了。当你创建一个MongoDB数据库时,使用一种合乎系统用户语言和文化的重音敏感、大小写敏感排序规则。这使得字符串数据的检索容易许多。...当一个包含大数组的文档重新索引时,由于每个数组元素都有一个单独的索引条目,所以会发生大量的索引重写。此外,这种重新索引在这类文档插入或删除时也会发生。...当没有合适的索引可用时,MongoDB就不得不在没有索引的情况下排序。...为了获得良好的性能,作为外键的键值上需要有索引。这并不明显,因为其使用并没有在explain()中报告。...在MongoDB中,要避免使用“undefined”。 使用$limit()而未用$sort() 通常,当你在MongoDB中开发时,仅仅查看查询或聚合返回的结果的样例会很有用。
解构遵循匹配模式 解构不成功时变量的值等于undefined undefined和null无法转为对象,因此无法进行解构 字符串扩展 [x] Unicode表示法:大括号包含表示Unicode字符(\...属性遍历 描述:自身、可继承、可枚举、非枚举、Symbol 遍历 for-in:遍历对象自身可继承可枚举属性 Object.keys():返回对象自身可枚举属性的键组成的数组 Object.getOwnPropertyNames...():返回对象自身可继承可枚举非枚举属性的键组成的数组 Object.getOwnPropertySymbols():返回对象Symbol属性的键组成的数组 Reflect.ownKeys():返回对象自身可继承可枚举非枚举...()返回的字符串之中表示对象的类型 Symbol.unscopables:指向一个对象,指定使用with时哪些属性会被with环境排除 数据类型 Undefined Null String Number...对同样值的两个实例,被视为两个键 键跟内存地址绑定,只要内存地址不一样就视为两个键 添加多个以NaN作为键时,只会存在一个以NaN作为键的值 Object结构提供字符串—值的对应,Map结构提供值—值的对应
void 1+2 // 输出undefined // 函数返回值为void let void_fun = (): void => {} // 可以被赋值undefined和null(设置strictNullChecks...枚举类型在js中是没有的,是一组具有名称的常量集合。...,符合反向映射,如上面的Role其实是: 基于字符串的枚举 // 字符串枚举 enum Message { success='success', fail='fail' } 字符串枚举不会反向映射...} let arr: List[] = [ {id: 0, name: 'duanshuqing'}, {id: 1, name: 'zhangzongwei', age: 25} ] // 当不做数据类型约束时可以添加其他未定义的属性...addr.province addr['city'] // 两者可以混用,number返回的属性值一定要和string返回的属性值一样 // 因为当通过number索引时,也是先转换为string再去索引
当直接传递不支持的类型undefined, Symbol, 和 Function 时,JSON.stringify会输出undefined (不是'undefined' 字符串): JSON.stringify...对于不支持的导致undefined 的类型,也就是undefined, Symbol, Function ,当它们在数组中被发现时,会被转换为字符串'null' ;当它们在对象中被发现时,整个属性会从输出中省略...另一种情况时,当传递循环对象时,JSON.stringify会抛出错误。大多数情况下,JSON.stringify是相当宽容的。...JSON.stringify(new Date()) // '"2022-06-01T14:22:51.307Z"' JSON.stringify只处理可枚举的、非符号键的对象属性。...符号键、非枚举属性会被忽略: const foo = {} foo[Symbol('p1')] = 'bar' Object.defineProperty(foo, 'p2', {value: 'baz
答案: A 通过for-in循环,我们可以遍历一个对象自有的、继承的、可枚举的、非Symbol的属性。在数组中,可枚举属性是数组元素的“键”, 即它们的索引。...,字符串中的第一个字符具有索引0,依此类推。...D: Error 答案: A Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,上述情况返回一个二维数组,数组每个元素是一个包含键和值的数组: [['name','Lydia...Object.keys方法返回对象上的所有可枚举的键属性。Symbol类型是不可见的,并返回一个空数组。记录整个对象时,所有属性都是可见的,甚至是不可枚举的属性。...这是Symbol的众多特性之一:除了表示完全唯一的值(防止对象意外名称冲突,例如当使用2个想要向同一对象添加属性的库时),您还可以隐藏这种方式对象的属性(尽管不完全。
字符串和数字具有无数个值,而其他类型如布尔值则是有限的集合。 一周的日子(星期一,星期二,......,星期日),一年的季节(冬季,春季,夏季,秋季)和基本方向(北,东,南,西)都是具有有限值集合的例子。 当一个变量有一个来自有限的预定义常量的值时,使用枚举是很方便的。...枚举的可读性更强,更明确,并消除了对魔法字符串或数字的使用。 优缺点 普通的对象枚举之所以吸引人,是因为它很简单:只要定义一个带有键和值的对象,枚举就可以了。...枚举代理拦截对枚举对象的读和写操作,并且: 当访问一个不存在的枚举值时,会抛出一个错误。...当一个枚举对象的属性被改变时抛出一个错误 下面是一个工厂函数的实现,它接受一个普通枚举对象,并返回一个代理对象: // enum.js export function Enum(baseEnum) {
enumerable当且仅当该属性的 enumerable 键值为 true 时,该属性才会出现在对象的枚举属性中。 默认为 false。...存取描述符还具有以下可选键值: get属性的 getter 函数,如果没有 getter,则为 undefined。当访问该属性时,会调用此函数。...该函数的返回值会被用作属性的值。 默认为 undefined。set属性的 setter 函数,如果没有 setter,则为 undefined。当属性值被修改时,会调用此函数。...属性值和函数的键 value、get 和 set 字段的默认值为 undefined。...当描述符中省略某些字段时,这些字段将使用它们的默认值。
Object.is() Object.is()方法是为了弥补全等运算符’===’的准确性,其接受两个参数,如果两个参数类型相同且具有相同的值,则返回true。...myMap.get('0') // xxx Object.assign() 对象组合,浅拷贝 自有属性枚举顺序 ESMAScript6严格定义了对象的自有属性被枚举时的返回顺序,这会影响到Object.getOwnPropertyNames...所有数字键按照升序排序; 所有字符串按照它们被加入对象的顺序排序; 所有symbol键按照它们被加入对象的顺序排序。...== 'undefined') ? name : 'ligang' // name = name || 'ligang' // 当name为假值时会出现问题!!...; 引用参数默认值时,只允许引用前面参数的值,即先定义的参数不能访问后面定义的参数。
)枚举主要分为数字类型枚举、字符串类型枚举、异构。...:枚举成员类型都是字符串需要注意以下几个方面:字符串枚举没有反向映射,如果进行反向映射的话,取得的值时undefined;enum StringValue {A = 'A',B = 'B',C = 'C...字符串枚举没有递增,需要对每一个字符串枚举类型成员进行赋值,即必须具有初始化表达式(3)异构含义:枚举类型包括字符串类型和数字类型注意:含有字符串值成员的枚举中不允许使用计算值,具体意思就是当枚举对象中存在有...instanceof func){//执行逻辑}我们可以用断言缩小未知范围或者可以用instanceof来缩小变量的类型,强制让ts编译器相信我们在做什么操作六、void(空类型)声明对象类型为void时返回为空值...function func(): void { }声明一个变量为void 时只能将它赋值为 undefined 和 null,因此在定义函数的返回值为void时,也可return undefined/nulllet
n:补全之后的长度,y要补充的字符串,重复出现 n=str长度:返回str 重复次数过多超过n,截取后面的多余字符 str.trim()//去除空白返回新字符串 str.trimStart(...(扩展运算符)的区别:都是能转化具有Iterator接口的数据为数组 {length:2},...不能转化 Array.from转换对象为[undefined,undefined],...转换对象报错...(obj);返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是Symbol或字符串,也不管是否可枚举 首先遍历所有数值键,按照数值升序排列 其次遍历所有字符串键,按照加入时间升序排列...设置属性时要用[] 遍历对象Symbol属性 Object.getOwnPropertySymbols()获取所有Symbol的属性 Reflect.ownKeys()获取自身的属性(包含不可枚举的属性...是遍历器的生成函数,执行这个函数就会返回一个遍历器 Symbol.iterator是表达式,返回Symbol对象的iterator属性(类型Symbol),所以要用[]设置或访问 原生数据具有iterator
浅拷贝 Object.assign 上篇文章介绍了其定义和使用,主要是将所有可枚举属性的值从一个或多个源对象复制到目标对象,同时返回目标对象。...如果目标对象中的属性具有相同的键,则属性将被源对象中的属性覆盖。后来的源对象的属性将类似地覆盖早先的属性。 示例1 我们知道浅拷贝就是拷贝第一层的基本类型值,以及第一层的引用类型地址。...c,可以看出 b 会替换掉 a 中具有相同键的值,即如果目标对象(a)中的属性具有相同的键,则属性将被源对象(b)中的属性覆盖。...,但是这样写没有必要,因为 undefined 和 null 是相等的(高程 3 P52 ),即 undefined == null 返回 true,只需要按照如下方式判断就好了。...// 注意,只有字符串的包装对象才可能有自身可枚举属性。
字符串枚举 TypeScript 2.4 实现了最受欢迎的特性之一:字符串枚举,或者更精确地说,带有字符串值成员的枚举。...对于字符串值枚举成员,此映射对象定义从键到值的映射,反之则不是: var MediaTypes; (function (MediaTypes) { MediaTypes["JSON"] = "application...,但不能通过键的值解析一个键 MediaTypes["JSON"]; // "application/json" MediaTypes["application/json"]; // undefined...MediaTypes["XML"]; // "application/xml" MediaTypes["application/xml"]; // undefined 与具有数字值成员的枚举进行比较...有时,可能有必要发出一个const枚举的映射代码,例如,当某些 JS 代码需要访问它时,在这种情况下,可以在tsconfig.json文件中打开prepareConstEnums编译器选项: {
返回一个数组,包含对象自身的所有 Symbol 属性的键名 Reflect.ownKeys 返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举...首先遍历所有数值键,按数值升序排列其次遍历所有字符串键,按加入时间升序排列最后遍历所有 Symbol 键,按加入时间升序排列 super 关键字 指向当前对象的原型对象,只能用在对象的方法之中使用 扩展运算符...参数处理 只有一个参数时直接返回该参数 参数不是对象会先转成对象然后返回 第一个参数为 undefined 和 null 时会报错 注意点 浅拷贝 同名属性会被替换 处理数组时会把数组视为对象...$n:匹配成功的第n组内容,n是从1开始的自然数(第一个参数必须是正则表达式) $$:指代美元符号$ at 返回参数指定位置的字符 支持负索引 倒数的位置 超出范围返回 undefined Reflect...都是从全局方法上移植过来的 只返回第一个数字 允许开头和结尾空格 第一个字符不能被转换为数字 时返回 NaN Number.EPSILON 常量表示 1 与大于 1 的最小浮点数之间的差 JavaScript
领取专属 10元无门槛券
手把手带您无忧上云