JavaScript
文章平均质量分 51
累了你就写会代码吧
越自律,越自由
展开
-
JavaScript的严格模式,设置严格模式的优势是什么
什么是严格模式所谓严格模式就是是ECMAScript 5中的一项新功能,它允许将程序或函数放置在严格的操作环境中,这种方法的好处规范了开发人员编写代码的规范以及减少页面出错。即使有良好的现代开发经验,也需要使用JavaScript严格模式,因为它会触发真实环境来进行语法检查。这意味着我们在执行时可以实时分析并显示语法和代码质量问题如何使用JavaScript的严格模式严格模式是一个非常安全的功能,每个现代浏览器和节点都支持严格模式。如果浏览器不支持严格模式,则就会忽略表达式,它只是一个字符串后跟一个分原创 2021-06-06 14:07:58 · 326 阅读 · 0 评论 -
jst实现bind、call、apply
说明:每个函数都包含两个非继承而来的方法:apply()和call(),这两个方法的用途是在特定的作用域中调用函数,等于设置了函数体内this对象的值实现bindif (typeof Function.prototype.bind !== 'function') { Function.prototype.bind = function(context, ...rest) { if (typeof this !== 'function') { throw原创 2021-04-06 14:03:27 · 124 阅读 · 0 评论 -
注释ts代码中的错误提示
在代码检查报错的地方写上// @ts-ignore即可过滤掉下一行的ts代码报错的提示原创 2021-03-22 11:52:29 · 1544 阅读 · 0 评论 -
JavaScript中的数据类型以及常问问题
前端面试中,估计大家都被这么问过。答:Javascript 中的数据类型包括原始类型和引用类型。其中原始类型包括 Null、Undefined、Boolean、String、Symbol、BigInt。引用类型指的是 Object。由这个问题可以引出很多很多的问题,比如:Null 和 Undefined 有什么区别?前端的判空有哪些需要注意的?typeof null 为什么是 object?为什么 ES6 要提出 Symbol?BigInt 解决了什么问题?为什么 0.1 + 0.2 !==原创 2021-01-26 17:02:22 · 255 阅读 · 0 评论 -
浅谈JSON.parse()和JSON.stringify()
JSON.parse()JSON 通常用于与服务端交换数据在接收服务器数据时一般是字符串我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象语法JSON.parse(text[, reviver])text:必需, 一个有效的 JSON 字符串reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数异常解析数据JSON 不能存储 Date 对象如果你需要存储 Date 对象,需要将其转换为字符串之后再将字符串转换为 Date原创 2020-12-22 15:32:56 · 222 阅读 · 0 评论 -
js将数字转换成万、亿、万亿
// js将数字转换成万、亿、万亿 var numberFormat = function (value) { var param = {}; var k = 10000, sizes = ['', '万', '亿', '万亿'], i; if(value < k){ param.value =value param.unit=原创 2020-12-22 15:15:56 · 4184 阅读 · 1 评论 -
内置对象Array-2
pop()原文:MDN - pop()功能:pop() 方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。语法:arr.pop():返回从数组中删除的元素返回值:一个新数组,每个元素都是回调函数的结果。代码:let arr = [1, 2, 3, 4];for(let i = 0, time = 1; i < arr.length; time++) { console.log(`------\n第 ${time} 次遍历:`);原创 2020-12-21 11:55:51 · 140 阅读 · 0 评论 -
内置对象Array-1
concat()原文:MDN - concat()功能:concat() 方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。语法:newArr = arr1.concat(arr2)newArr:新数组arr1:旧数组 1arr2:旧数组 2返回值:新的 Array 实例。代码:const newArr = [1, 2, 3].concat(['a', 'b', 'c']);// [1, 2, 3, 'a', 'b', 'c']fi原创 2020-12-21 11:50:13 · 304 阅读 · 0 评论 -
展开运算符[...object]
如果只说 展开运算符,可能小伙伴会一脸懵逼,你在说啥啊?但是如果换成另一种说法:[...object],那么小伙伴可能恍然大悟:“噢~ 你说 ES6 的这个表达式啊!”原文:MDN - 展开语法功能:展开语法(Spread syntax),可以在函数调用/数组构造时,将数组表达式或者 string 在语法层面展开;还可以在构造字面量对象时,将对象表达式按 key-value 的方式展开。语法:函数调用:myFunction(...iterableObj);字面量数组构造或字符串原创 2020-12-21 11:33:06 · 787 阅读 · 0 评论 -
表达式和运算符
MDN - 表达式和运算符一 主要表达式目录thisfunctionclassfunciton*yieldyield*[]{}/ab+c/i()二 左表达式目录属性访问符newnew.targetsuper…obj三 自增和自减目录A++A–++A–A四 一元运算符目录deletevoid+-.原创 2020-12-21 11:30:00 · 88 阅读 · 0 评论 -
判断数据类型(typeof)
原文:MDN - typeof功能:typeof 操作符返回一个字符串,表示未经计算的操作数的类型。方法:typeof operand 或者 typeof(operand)operand:一个表示对象或原始值的表达式,其类型将被返回。说明:下面列举下 typeof 可能的返回值:类型结果Undefined‘undefined’Null‘object’Boolean‘boolead’Number‘number’BigInt..原创 2020-12-21 11:26:41 · 395 阅读 · 2 评论 -
判断数据类型 (toString)
原文:MDN - toString功能:toString() 方法返回一个表示该对象的字符串。方法:obj.toString()返回值:一个表示该对象的字符串。说明:每个对象都有一个 toString() 方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString() 方法被每个 Object 对象继承,如果该方法没有在自定义对象中被覆盖,toString() 返回 '[object type]',其中 type 是类型..原创 2020-12-21 11:24:03 · 684 阅读 · 0 评论 -
判断数据类型(instanceof)
原文:MDN - instanceof功能:instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。示例:function Car(make, model, year) { this.make = make; this.model = model; this.year = year;}var auto = new Car('Honda', 'Accord', 1998);console.log(auto instan..原创 2020-12-21 11:20:50 · 2019 阅读 · 0 评论 -
判断数据类型(constructor)
原文:MDN - constructor功能:constructor 返回创建实例对象的 Object 构造函数的引用。描述:所有对象都会从它的原型上继承一个 constructor 属性。const arr = [];console.log(arr.constructor === Array); // trueconst obj = {};console.log(obj.constructor === Object); // trueconst num = 1;con..原创 2020-12-21 11:15:54 · 1505 阅读 · 1 评论 -
闭包的概念作用副作用以及常见场景
闭包的概念在一个函数内定义一个内部函数,并将内部函数返回,即使该外部函数已经执行结束了,但是内部函数引用外部函数的变量依然保存在内存中,我们就把这些变量的集合称为闭包(或者将内部函数成为闭包)。也有些人定义闭包的概念为:在一个函数内部定义一个函数,那么这个内部函数就被称为“闭包”。function f1(){ var a1=1; function f2(){ console.log(a1) } return f2}let result=f1()result(原创 2020-12-19 14:47:23 · 442 阅读 · 2 评论 -
常用的数组遍历方法forEach,filter,some,every,map,find,reduce的用法与区别
- forEach等同于for循环let arr = [1,2,3,4,5]let a = arr.forEach((val,index)=>{ arr[index] +=1 return index})console.log(a) //undefinedconsole.log(arr) // [2, 3, 4, 5, 6]maplet arr = [1,2,3,4,5]let arr1 = arr.map((val,index)=>{ r原创 2020-12-10 14:38:10 · 446 阅读 · 0 评论 -
手撸代码面试题5-ts 跟js之间的关系
TS是JS的超集,TS比JS更强大,功能更全,更加安全,语法更严谨,但是TS多了一个编译的步骤,最后还是要通过插件或者babel编译成JS代码来运行。原创 2020-12-07 11:42:53 · 819 阅读 · 0 评论 -
手撸代码面试题4-深拷贝浅拷贝
// 浅复制:仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅复制出来的对象也会相应的改变。// 深复制:在计算机中开辟一块新的内存地址用于存放复制的对象。// 实现深拷贝 主要利用了递归 function deepClone(obj){ let objClone = Array.isArray(obj)?[]:{}; if(obj && typeof obj==="object"){ for(key in obj){原创 2020-12-07 11:40:27 · 190 阅读 · 0 评论 -
手撸代码面试题3-简述Symbol类型和用途
//解释: ES6中新增的一种类型 使用Symbol 用来解决命名冲突问题 Symol,用来产生一个全局唯一的标识符,它接受一个字符串参数,作为该标识符的描述// 举一反三:var flag1 = Symbol("abc");var flag2 = Symbol("abc");console.log(flag1==flag2)// 输出 false...原创 2020-12-07 11:37:46 · 332 阅读 · 0 评论 -
手撸代码面试题2-找出数组中最小的值
//使用es6 找出数组最小值var arr= [1,2,3,4,5,65,4,53,3,4,5,3,0];console.log(Math.min(...arr))// 输出:0//解释: 首先使用 es6中的解构 将数组展开 然后使用Math.min给我们提供的函数 传入多个参数来输出最小的一个值// 举一反三:(首先去重 其次数组中获取最小值)var arr= [1,2,3,4,5,65,4,53,3,4,5,3,0];var minValue = Array.from(n原创 2020-12-07 11:33:14 · 135 阅读 · 0 评论 -
手撸代码面试题1-局部作用域与全局作用域
//一、执行结果 并解释原因var a = [];for(var i = 0;i<10;i++){ a[i] = function(){ console.log(i) }}a[6](); // 输出:10//解释: 主要考察局部作用域的问题 使用var定义的变量i是全局作用域 for循环循环10次 很快就会执行完 且每次都会输出10 // 举一反三: let 实现var a = [];for(let i = 0;i<10;原创 2020-12-07 11:29:44 · 192 阅读 · 0 评论 -
手撸一个Promise
/* 要做的事情(总结): 1.promise 是一个类 在执行和这个类的时候需要传递一个执行器 执行器会立即执行 2.promise 有三种状态 成功(fulfilled) 失败(rejected) 等待(pending) pending==>fulfilled pending==>rejected 状态发生改变不能进行更改 3. resolve 和 reject 函数是用来更改状态的 resolve:成功 rejec原创 2020-12-07 11:27:27 · 286 阅读 · 0 评论