JS数据类型相关
文章平均质量分 76
js相关
wflynn
研究代码中...将随缘更新
展开
-
ES6的Map常用用法
Map与数组的关系var kvArray = [["key1", "value1"], ["key2", "value2"]];// 使用常规的Map构造函数可以将一个二维键值对数组转换成一个Map对象var myMap = new Map(kvArray);myMap.get("key1"); // 返回值为 "value1"// 使用Array.from函数可以将一个Ma...原创 2019-12-09 14:19:35 · 415 阅读 · 0 评论 -
WeakSet
WeakSet 含义WeakSet 结构与 Set 类似,也是不重复的值的集合。但是,它与 Set 有两个区别。首先,WeakSet 的成员只能是对象,而不能是其他类型的值。const ws = new WeakSet();ws.add(1)// TypeError: Invalid value used in weak setws.add(Symbol())// TypeE...原创 2019-12-09 14:22:09 · 151 阅读 · 0 评论 -
WeakMap
什么是WeakMapWeakMap结构与Map结构类似,也是用于生成键值对的集合。// WeakMap 可以使用 set 方法添加成员const wm1 = new WeakMap();const key = {foo: 1};wm1.set(key, 2);wm1.get(key) // 2// WeakMap 也可以接受一个数组,// 作为构造函数的参数const k...原创 2019-12-09 14:33:06 · 172 阅读 · 0 评论 -
while循环详解
while语句可以在某个条件表达式为真的前提下,循环执行指定的一段代码,直到那个表达式不为真时结束循环。原创 2019-12-18 17:28:04 · 409 阅读 · 0 评论 -
propertyIsEnumerable
propertyIsEnumerable()方法返回一个布尔值,表示指定的属性是否可枚举。每个对象都有一个 propertyIsEnumerable 方法。此方法可以确定对象中指定的属性是否可以被 for...in 循环枚举,但是通过原型链继承的属性除外。如果对象没有指定的属性,则此方法返回 false。基本用法var o = {};var a = [];o.prop = 'i...原创 2019-12-23 13:48:49 · 671 阅读 · 0 评论 -
将多层级数组转化为一级数组(即提取嵌套数组元素最终合并为一个数组)
需求:多维数组=>一维数组let ary = [1, [2, [3, [4, 5]]], 6];// -> [1, 2, 3, 4, 5, 6]1. 调用ES6中的flat方法ary = ary.flat(Infinity);flat()方法会移除数组中的空项:var arr4 = [1, 2, , 4, 5];arr4.flat();// [1, 2...原创 2019-11-27 15:37:40 · 3800 阅读 · 0 评论 -
forEach循环详解
forEach()方法对数组的每个元素执行一次给定的函数。indexarrayforEach()thisArg: 可选,当执行回调函数callback时,用作this的值。undefined。原创 2019-11-28 15:55:15 · 11982 阅读 · 0 评论 -
数组的find/findIndex详解
find()返回数组中满足提供的测试函数的第一个元素的值。否则返回 undefined。 find方法对数组中的每一项元素执行一次callback函数,直至有一个callback 返回true。当找到了这样一个元素后,该方法会立即返回这个元素的值,否则返回undefined。 注意callback函数会为数组中的每个索引调用即从0到length - 1,而不仅仅是那些...原创 2019-12-05 10:21:18 · 7821 阅读 · 0 评论 -
Iterator遍历器
Iterator(遍历器)的概念JavaScript 原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set。 这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象。这样就需要一种统一的接口机制,来处理所有不同的数据结构。 遍历器(Iterator)就是这样一种机制。它是一种接口......原创 2019-12-05 10:44:23 · 1312 阅读 · 0 评论 -
数组的Map方法详解
map():创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。indexarraymapthisArg: 可选,执行callback函数时值被用作this返回值:一个由原数组每个元素执行回调函数的结果组成的新数组。mapcallbackcallbackundefinedcallbackdeletemapcallback因为map生成一个新数组,当你不打算使用返回的新数组却使用请用forEach或者for-of替代。原创 2019-12-05 11:10:08 · 17127 阅读 · 2 评论 -
数组的reduce()和reduceRight()方法
reduce()对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。reducer函数接收4个参数:Accumulator (acc) (累计器) Current Value (cur) (当前值) Current Index (idx) (当前索引) Source Array (src) (源数组)您的reducer函数的返...原创 2019-12-05 14:17:12 · 603 阅读 · 0 评论 -
js内置对象Number的属性
NumberJavaScript 的Number对象是经过封装的能让你处理数字值的对象。Number对象由Number() 构造器创建。语法new Number(value); var a = new Number('123'); // a === 123 is falsevar b = Number('123'); // b === 123 is truea inst...原创 2019-11-22 10:34:18 · 316 阅读 · 0 评论 -
JS内置对象Math详解
Math 是一个内置对象, 它具有数学常数和函数的属性和方法。不是一个函数对象。 Math 适用于 Number 类型。它不支持 BigInt。 与其他全局对象不同的是,Math不是一个构造器。Math的所有属性与方法都是静态的。Math的相关属性Math.E 属性表示自然对数的底数(或称为基数),e,约等于 2.718。(2.718281828459045) Math.LN10...原创 2019-11-22 14:22:00 · 446 阅读 · 0 评论 -
JS内置对象BigInt
什么是BigInt?BigInt是一种内置对象,它提供了一种方法来表示大于 2的53次方 - 1 的整数。这原本是 Javascript 中可以用 Number 表示的最大数字。BigInt 可以表示任意大的整数。为什么需要BigInt?在JS中,所有的数字都以双精度64位浮点格式表示,那这会带来什么问题呢?这导致JS中的Number无法精确表示非常大的整数,它会将非常大的整数四...原创 2019-11-22 14:40:28 · 2337 阅读 · 0 评论 -
JS内置对象Boolean详解
语法:new Boolean([value]) 如果第一个参数不是布尔值,则会将其转换为布尔值。 如果省略该参数,或者其值为 0、-0、null、false、NaN、undefined、或者空字符串(""),则生成的 Boolean 对象的值为 false。 任何其他的值,包括值为"false"的字符串和任何对象,都会创建一个值为true的Boolean对象。 注意不要将基本类...原创 2019-11-23 09:49:55 · 490 阅读 · 0 评论 -
JS内置对象Date详解
创建一个新Date对象let now = new Date();语法new Date();new Date(value);new Date(dateString);new Date(year, monthIndex, day, hours, minutes, seconds, milliseconds);year:表示年份的整数值。 0到99会被映射至1900年至1999...原创 2019-11-23 13:22:09 · 546 阅读 · 0 评论 -
js 中 null 的理解,为什么 null 是一个空指针对象
在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是 0。 由于null代表的是空指针(大多数平台下值为 0x00),因此,null 的类型标签是 0,typeof null也因此返回"object" 虽然 typeof null 会输出 object,但是这只是 JS 存在的一个悠久 Bug。在 JS 的最初版...原创 2019-11-25 09:55:43 · 2338 阅读 · 0 评论 -
for in 循环详解
for in循环for...in 语句以任意顺序遍历一个对象的除 Symbol 以外的可枚举属性。 for...in 循环只遍历可枚举属性。像 Array和 Object 使用内置构造函数所创建的对象都会继承自Object.prototype和String.prototype的不可枚举属性,例如 String 的 indexOf() 方法或 Object的toString()方法。循环将遍......原创 2019-11-25 15:49:33 · 119576 阅读 · 2 评论 -
arguments详解,类数组转数组方法
允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数。属性和索引元素之外没有任何。:返回它所对应的原函数。非严格模式下,可以通过。,达到调用函数自身的目的。...原创 2019-11-27 15:16:09 · 394 阅读 · 0 评论 -
JS判断数组中是否包含某个值
方法一:array.indexOf此方法判断数组中是否存在某个值,如果存在,则返回数组元素的下标,否则返回-1。var arr = [1, 2, 3, 4]var index = arr.indexOf(3)console.log(index)方法二:array.includes(searcElement[,fromIndex])此方法判断数组中是否存在某个值,如果存在...原创 2019-11-27 15:32:11 · 172 阅读 · 0 评论 -
JS面试点-原型链相关
Object与Function的关系构造器Function的构造器是它自身Function._proto_ === Function.prototype // trueFunction.constructor === Function // true构造器Object的构造器是Function(由此可知所有构造器的constructor都指向Function)Object.c...原创 2019-11-22 09:30:39 · 177 阅读 · 0 评论 -
数组的解构赋值
解构赋值:通过解构赋值,可以将属性或值从对象或数组中取出,赋值给其他变量。 简单理解就是等号的左边和右边相等。主要分为对象的解构和数组的解构。在没有解构赋值的时候,我们赋值是这样的let arr = [0, 1, 2]let a = arr[0]let b = arr[1]let c = arr[2]===// 解构写法let [a, b, c] = [0, 1, ...原创 2019-10-21 12:55:24 · 874 阅读 · 0 评论 -
JS面试点-JavaScript原型及原型链
为什么需要原型在js中万物皆对象,对象可以说是重中之重了。每一个对象都拥有自己的属性。但是在这个世界中有很多东西都是相似的,可以归为一类,他们有共同的方法和属性。不可能让每一个对象都定义一个属性吧。那样太消耗内存了。所以,在js中怎么才能让多个对象共享一个或多个方法呢?原型的出现就是为了解决这个问题。什么是原型对象声明一个构造函数function Person() { // 这是...原创 2019-09-27 14:57:01 · 245 阅读 · 0 评论 -
字符串操作方法API
基本字符串和字符串对象的区别通过单引号或双引号定和直接调用 String 方法(没有通过 new 生成字符串对象实例)的字符串都是基本字符串。 JavaScript会自动将基本字符串转换为字符串对象,只有将基本字符串转化为字符串对象之后才可以使用字符串对象的方法。 当基本字符串需要调用一个字符串对象才有的方法或者查询值的时候(基本字符串是没有这些方法的),JavaScript 会自动将基...原创 2019-09-23 16:28:17 · 300 阅读 · 0 评论 -
详解JavaScript的数组,JS数组方法大全
什么是数组数组是值得有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。 js的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组。 数组元素的索引不一定要连续,元素之间可以有空隙,叫做稀疏数组 。 每个数组都具有一个length属性。 针对非稀疏数组,length属性就是数组元素的个数,针对稀疏数组,元素的length属性比所...原创 2019-09-21 08:03:19 · 708 阅读 · 0 评论 -
javaScript变量提升以及函数提升
直觉上会认为JavaScript代码在执行时是由上到下一行一行执行的。但实际上这并不完全正确,有一种特殊情况会导致这个假设是错误的。示例如下考虑以下代码:a = 2;var a;声明会输出什么呢?很多人会认为是undefined,因为var a声明在a = 2之后,他们自然而然地认为变量被重新赋值了,因此会被赋予默认值undefined。但是,真正的输出结果是2。考虑另外一段代码:你可能会认为这个代码片段也会有同样的行为而输出2。还有人可能会认为,由于变量a。...原创 2019-09-19 17:42:10 · 1475 阅读 · 0 评论 -
JavaScript 数据类型
最新ECMAScript基本数据类型七种字符串(string) 数字(number) 布尔值( boolean) 空值(null) 未定义(undefined) BigInt(bigInt) 符号(symbol,ES6 中新增)引用数据类型:object(在JS中除了基本数据类型以外的都是对象。普通对象-Object,数组对象-Array,正则对象-RegExp...原创 2019-09-23 15:10:15 · 150 阅读 · 0 评论 -
typeof返回值详解
typeof操作符返回一个字符串typeof可能的返回值类型 结果 Undefined undefined Null object Boolean boolean Number number BigInt bigint String string Symbol symbol Function func...原创 2019-11-21 14:31:52 · 6047 阅读 · 1 评论 -
JS之instanceof详解
instanceof用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。语法:object instanceof constructorobject:某个实例对象constructor:某个构造函数用来检测 constructor.prototype 是否存在于参数 object 的原型链上。示例// 定义构造函数function C () {}function D () {}// 实例化一个 o 对象var o = new C()// tru原创 2019-11-22 09:53:04 · 125839 阅读 · 9 评论 -
null与undefined的不同点,undeclared是什么
指曾赋过值,但是目前没有值,表示一个“空”的对象,转为数值时为0。原创 2019-11-23 14:06:29 · 244 阅读 · 0 评论 -
js类型显式隐式转换详解
JS类型转换(强制和自动的规则)显式转换通过手动进行类型转换,Javascript提供了以下转型函数:转换为数值类型:Number(mix)、parseInt(string,radix)、parseFloat(string)转换为字符串类型:toString(radix)、String(mix)转换为布尔类型:Boolean(mix)Number(mix)函数,可以将任意类型...原创 2019-11-26 09:42:11 · 552 阅读 · 0 评论 -
parseFloat()与parseInt() 详解
parseFloat()parseFloat() 方法可以把一个字符串解析成浮点数。该方法与Number.parseFloat() 函数相同。解析一个参数(必要时先转换为字符串)并返回一个浮点数。返回值:给定值被解析成浮点数。如果给定值不能被转换成数值,则会返回NaN。1、如果 parseFloat 在解析过程中遇到了正号(+)、负号(- U+002D HYPHEN-MINUS)、数字(0-...原创 2019-11-22 11:15:48 · 6835 阅读 · 0 评论 -
JS类型转换难点面试题
js中的类型名的强制类型转换Number(mix)、 String(mix)、 Boolean(mix)js中的类型隐式转换的条件是什么?各种运算符,包括==比较运算符,还有++,大于小于等等js中强制类型转换的两种方式是什么?类型转换函数:parseInt(string,radix)、parseFloat(string)、toString(radix)类型类的...原创 2019-11-26 16:00:30 · 643 阅读 · 0 评论 -
JavaScript的基本类型Symbol
数据类型 “symbol” 是一种原始数据类型 Symbol 本质上是一种唯一标识符,可用作对象的唯一属性名,这样其他人就不会改写或覆盖你设置的属性值。 Symbol() 函数会返回symbol类型的值,该类型具有静态属性和静态方法。 作为构造函数来说它并不完整,因为它不支持语法:"new Symbol()"。 每个从Symbol()返回的symbol值都是唯一的。 一个symbol值能...原创 2019-10-08 13:44:11 · 414 阅读 · 0 评论 -
JS判断数据类型
怎么判断对象类型?可以通过 Object.prototype.toString.call(xx)。这样我们就可以获得类似 [object Type] 的字符串。 instanceof 可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的 prototype。封装好的函数judgeType (obj) { let class2type = {};...原创 2019-12-03 09:47:04 · 136 阅读 · 0 评论