![](https://img-blog.csdnimg.cn/20190929192330984.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaScript
文章平均质量分 94
包括JS基础语法和JS高级语法,包括ES5、ES6、ES7
叶子加油加油
一个热爱互联网,热爱web的程序媛
展开
-
【面试常考】JS如何检测数组?
instanceofconst arr = [1, 2]console.log(arr instanceof Array) // trueArray.isArray()const arr = [1, 2]console.log(Array.isArray(arr)) // truetoString()const arr = [1, 2]console.log(Object.prototype.toString.call(arr) === '[Object Array]') /.原创 2020-12-28 15:59:36 · 149 阅读 · 0 评论 -
你了解postMessage吗?
前言:通常,对于两个不同页面的脚本,只有当执行它们的页面位于同源(同协议、同主机、同端口)情况下,这两个脚本才能相互通信。window.postMessage()方法可以安全地实现跨域通信(前提:正确使用)。使用:语法:otherWindow.postMessage(message, targeOrigin, [opt]);字段解释:(1)otherWindow:其他窗口的一个引用,比如执行window.open返回的窗口对象;(2)message:将要发送到其他window的消息,它将被结原创 2020-06-29 17:24:18 · 565 阅读 · 0 评论 -
【面试常考】JS节流与防抖
前言:浏览器的resize、scroll、keypress、mousemove等事件在触发时,会不断地调用绑定在事件上的回调函数,极大地浪费资源,降低前端性能。防抖和节流都是通过减少对事件绑定的回调函数的调用频率来实现的。函数防抖(debounce)概念:在事件被触发n秒后再执行回调,如果在这n秒内事件又被触发,则重新计时。应用场景如:以用户拖拽窗口大小,触发resize事件为例,在这个resize过程中窗口的大小一直在改变,所以如果我们在resize事件中绑定回调函数,这个函数将会不断被触发,而这原创 2020-06-29 16:13:00 · 258 阅读 · 0 评论 -
JS内存泄漏
1.什么是内存泄漏?本质上讲,内存泄漏就是当变量不再被需要的时候,由于某种原因,它所占用的内存空间无法被释放。2.JavaScript中存在两种变量:(1)全局变量(2)局部变量 全局变量的生命周期会一直到页面卸载,而局部变量声明在函数中,它的生命周期从执行函数开始,直到函数执行结束。在这个过程中,局部变量会在栈或栈上被分配相应的内存去存储它们的值,函数执行结束,这些局部变量也不再被使用,所以它们所占用的内存也就被释放。但有一种情况:局部变量所占用的内存并不会随着函数执行结束而被回收,那就是局部原创 2020-06-29 11:40:16 · 150 阅读 · 0 评论 -
JS垃圾回收机制
1.为什么要进行垃圾回收呢?内存是程序运行时所依赖的宝贵的资源,合理利用内存是每个程序员在编码过程中应该关注的事情。2.JS的垃圾回收机制:JavaScript具有自动垃圾回收机制,垃圾回收器会定期对那些我们不再使用的变量、对象所占用的内存进行释放。垃圾回收器,它的主要工作是跟踪内存的分配和使用,以便当分配的内存不再使用时自动释放它。3.JS垃圾回收的算法:(1)标记清除法 当变量进入执行环境时标记为“进入环境”,当变量离开执行环境时则被标记为“离开环境”,被标记为“进入环境”的变量是不能被回原创 2020-06-29 11:38:07 · 1133 阅读 · 0 评论 -
【面试常考】JS的继承模式都有哪些?
JS的继承模式有:1.原型链继承function Person(name) { this.name = name}Person.prototype.showName = function() { console.log(this.name)}let p = new Person('zyy')//'zyy'//对象p自己没有showName函数,但它的原型上有所以它可以继承到这个方...原创 2019-10-02 23:22:45 · 143 阅读 · 0 评论 -
【面试常考】来你给我讲一下什么是闭包?
1.什么是闭包(Closure)?当嵌套的内部函数引用了其外部函数的变量(函数)时,就形成了闭包。2.闭包什么产生?嵌套的外部函数被调用的时候,也就是执行嵌套的内部函数的定义时。3.常见的闭包?(1)将嵌套的内部函数作为其外部函数的返回值;function fn() { var a = 1; function foo() { //闭包 a++ console.log(a...原创 2019-10-02 22:09:48 · 776 阅读 · 3 评论 -
【面试常考】JS原型链
1.理解(1)显式原型每个函数在定义的时候都有一个显式原型prototype,默认指向一个空的Object对象。function People() { //this.prototype = {}}(2)隐式原型每个对象实例都有一个隐式原型__proto__,指向创建它的构造函数的显示原型。let p = new People() //p.__proto__ = People....原创 2019-10-02 11:33:58 · 234 阅读 · 0 评论 -
JS的数据类型分类和判断
1.JS数据类型的分类(1)基本数据类型(值类型)String、Boolean、Number、Undefined、Null、Symbol(ES6引入)(2)对象数据类型(引用类型)Array、Function、Object2.JS数据类型的判断(1)typeof用来判断基本数据类型,它的返回值是一个代表数据类型的字符串。用法:typeof 变量名typeof的返回值有以下几种...原创 2019-09-30 15:21:53 · 393 阅读 · 0 评论 -
浅析ES6的Promise,Generator,Async
1.Promise,Generator,Async的相同之处:(1)都是用于解决异步编程(异步回调)的解决方案;(2)都是异步操作以同步操作的流程表达出来,避免早些时候回调函数的层层嵌套问题,即解决了“回调地狱”问题。2.Promise,Generator,Async的不同之处:(1)Promise,Generator是ES6提出的,Async是ES7提出的;(2)在编码上不同。Pr...原创 2019-09-30 11:41:25 · 191 阅读 · 0 评论 -
【面试常考】谈谈你对ES6中的Generator函数的认识
1.对Genetator函数的理解:(1)Generator函数是ES6提供的一种异步编程的解决方案;(2)Generator函数是一个状态机,封装了多个内部状态,执行Generator函数会返回一个遍历器对象,也就是说,Generator函数除了是状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历Generator函数内部的每一个状态。2.Generator函数的特征:(...原创 2019-09-30 10:13:22 · 840 阅读 · 0 评论 -
【面试常考】JS的深拷贝和浅拷贝
1.拷贝的理解拷贝,即copy,拷贝数据的意思。2.拷贝数据的方式:(1)直接赋值给一个变量(2)Object.assign()(3)Array.prototype.slice()(4)Array.prototype.concat()(5)JSON.parse(JSON.stringify())…3.拷贝数据应用(1)基本数据类型拷贝后会生成一份新的数据,修改拷贝后的数据不会...原创 2019-09-29 22:52:53 · 6303 阅读 · 1 评论 -
【面试常考】ES6之Promise
1.理解:(1)Promise是一个构造函数,用来生成promise实例;(2)promise实例代表了未来某个将要发生的事件(通常是异步操作);(3)引入promise,在编写代码的时候,异步操作可以以同步流程的代码书写,避免了层层嵌套的回调函数(‘回调地域’)。2.promise的3种状态:(1)pending:初始化状态(2)rejected:失败状态(3)fullfilled...原创 2019-09-29 16:24:41 · 228 阅读 · 0 评论 -
【面试常考】浅谈ES6中的Set和Map数据结构
1.Set(1)理解:Set本身是一个构造函数,用来生成Set数据结构。它类似于数组,但是成员的值是唯一的,不重复的。(2)用法:// 数组去重[...new Set([1,2,2,3])] //[1.2.3]// 字符串去重[...new Set['zyy']].join('') // 'zy'(3)注意:向 Set 加入值的时候,不会发生类型转换,所以5和"5"是两个不同...原创 2019-09-29 15:57:47 · 779 阅读 · 0 评论 -
【面试常考】你熟悉箭头函数吗?
1.箭头函数的作用定义匿名函数,回调函数2.箭头函数的特点:(1)写法简洁// 这是普通函数var fun1 = function() { alert('我是普通函数')}// 这是箭头函数var fun2 = () => alert('我是箭头函数')(2)箭头函数的this不是调用的时候决定的,而是定义的时候它所处的上下文环境决定的//这是普通函数var fun...原创 2019-09-29 13:49:45 · 312 阅读 · 0 评论 -
【面试常考】说说你对ES6中let关键字的理解
1.let关键字的作用:与ES5中的var类似,用来声明一个变量。2.let关键字的特点:(1)不能重复声明同一个变量let username = 'zyy'let username = 'qjw'console.log(username) // 会报错,提示username该变量已经声明过(2)在块级作用域内有效,如:循环遍历加监听案例(3)不存在预处理,即不存在变量提升的过程...原创 2019-09-29 12:17:42 · 1140 阅读 · 0 评论 -
【面试常考】apply,bind,call的作用和区别
1.apply,call,bind的作用:强制绑定this的指向2.apply,call,bind的区别/不同:(1)传参形式不同:apply第二个参数必须以数组的形式传参,否则会报错,如:[val1,val2…]call,bind第二个参数依次传入,如:val1,val2…(2)bind与apply,call的区别:apply,call是立即调用函数,绑定完this后并立即调用当前...原创 2019-09-29 11:50:18 · 207 阅读 · 0 评论 -
JavaScript严格模式
1.理解:JavaScript运行模式有两种:混杂模式、严格模式。顾名思义,严格模式使得JavaScript在更为严格的语法条件下运行。2.使用严格模式的目的/作用:(1)消除JavaScript语法的一些不合理、不严谨之处,减少一些怪异行为;(2)消除代码运行的一些不安全之处,为代码的安全运行保驾护航(比如:防止全局污染,内存泄漏等问题)(3)提高编译器效率,增加运行速度;(4)为未...原创 2019-09-29 10:38:13 · 245 阅读 · 0 评论 -
【面试常考】我终于明白事件循环(Event Loop)咋肥事了
在说事件循环之前,我们首先要搞清楚以下几个知识点。JavaScript为什么是单线程的?如果js不是单线程的,同时有两个方法操作一个DOM节点,一个做删除任务,一个做修改任务,那么此时浏览器该听谁的???JavaScript为什么是异步的?如果js不是异步的,由于代码的执行是自上而下的,那么如果一行代码需要执行很久,下一行的代码就会被阻塞。对用户来说,就是页面“卡死”,这样的话,用...原创 2019-09-29 10:23:24 · 382 阅读 · 0 评论