js基础知识
文章平均质量分 87
kellywong
这个作者很懒,什么都没留下…
展开
-
前端面试中的es6
1. 说一下你所知道的es6(es6新特性)let和const声明变量,两个都有块级作用域,ES5中var是没有块级作用域的,并且var有变量提升,在let中,使用的变量一定要进行声明,且不能重复声明。箭头函数模板字符串模板字符串,更便捷的连接变量和字符常量解构赋值,允许按照一定模式,从数组和对象中提取值,对变量进行赋值for of循环,可以遍历数组、Set和Map结构、某些类似数组的对象、对象,以及字符串支持import、export模块化管理代码set和map数据结构… 展开运算符可以原创 2020-06-16 17:29:16 · 437 阅读 · 0 评论 -
大厂面经---js面试常见考察基础题
1. typeoftypeof null === ‘object’2. NaN3. 类型转换'1'+2+3parseInt('123ab') //123parseInt('123ab')++Number('123ab') // NaN原创 2020-05-26 19:47:34 · 236 阅读 · 0 评论 -
大厂面经-js基础篇(必包/this)
1. 必包1.1 什么是必包必包是js语言的一种特性,主要包含的要点是函数会形成单独的作用域,同作用域的对象可以互相访问,作用域呈层级包含状态,形成作用域链,子作用域的对象可以访问父作用域的对象,反之不能。比如我们在a函数里面返回b函数,当 b 函数执行的时候,a函数上下文已经被销毁了啊,但是我们依然能读取到a作用域下的值?这是因为作用域链导致的,b函数引用了 a函数活动对象中的值的时候,即使 a的执行上下文被销毁了,但是 js依然会让 a函数活动对象活在内存中,b函数依然可以通过 b 函数的作用域链原创 2020-05-25 20:11:58 · 358 阅读 · 1 评论 -
大厂面经--js基础篇(执行上下文/作用域/变量对象)
1. 执行上下文1.1 什么是执行上下文var foo = function () { console.log('foo1');}foo(); // foo1var foo = function () { console.log('foo2');}foo(); // foo2// 变量提升function foo() { console.log('foo1');}foo(); // foo2function foo() { console.log原创 2020-05-23 20:09:45 · 221 阅读 · 0 评论 -
彻底搞懂js原型,原型链,继承
一、js中的原型和原型链和其他的面向对象编程语言不同,最开始js并没有引入class的概念,但是js中有在大量使用对象,为了保证对象之间的联系,JavaScript引入了原型与原型链的概念。1、什么是原型在js中,每一个构造函数都拥有一个prototype属性,这个属性指向一个对象,也就是原型对象。原型对象默认拥有一个constructor属性,指向指向它的那个构造函数,每个对象都拥有一个隐藏的属性[[prototype]],指向它的原型对象。原型对象就是用来存放实例中共有的那部分属性。2. 什么是原创 2020-05-23 17:20:40 · 582 阅读 · 0 评论 -
使用eslint+prettier来构建前端项目提交规范
背景团队多人协同开发,为了保证代码质量,对代码制定规范化的标准是必须的,在此分享下,目前我们的项目采用的规范化手段:一、代码校验以及提交的过程中的配置在package.json中配置pre-commitpre-commit钩子可以在 git commits 之前运行一段脚本,比如在commit代码之前运行eslint,校验失败则代码提交失败,校验成功则允许提交代码。"pre-comm...原创 2019-12-26 20:54:14 · 996 阅读 · 0 评论 -
h5拖拽api (drag,drop)实现多图片拖动排序,兼容移动端
需求:h5页面实现允许多张图片上传并且支持对图片长按拖动排序,由于我们的h5页面在pc端和移动端都有入口,因此拖动排序需要兼容pc和移动端。这里不涉及图片上传,只涉及对上传的图片进行拖动排序。在开发前需要知道,h5拖拽api(drag/drop)基本只支持pc端(但是,我在实际开发中,发现很多安卓手机也支持这个api, ios端不支持),因此我们如果使用拖拽api,需要做移动端的兼容。如果完全自...原创 2019-04-08 19:26:20 · 6568 阅读 · 0 评论 -
获取图片高度问题------页面图片加载完成后获取图片高
问题描述:因为埋点的需要,需要判断一个产品是否进入用户可视区域,在实现过程中出现:每次新打开一个窗口,使用element.getBoundingClientRect().top的值都是错的,但是刷新页面,值又正常了。思考过程:为什么会出现这种情况啊,明明是在componentDidMount中做的处理,该生命周期函数运行的时候不是页面dom都加载完了吗,那不应该获取不到图片高度啊?是不是...原创 2019-04-26 17:01:47 · 2563 阅读 · 0 评论 -
微信小程序架构原理
一、相关SDK小程序SDK原生小程序页面开发使用微信提供的小程序基础库(小程序sdk:https://developers.weixin.qq.com/miniprogram/dev/api/)进行。小程序基础库提供丰富的微信原生API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等。JS-SDK小程序内嵌的h5页面的开发,通过调用微信提供的JS-SDK(htt...原创 2019-04-28 16:36:25 · 1834 阅读 · 0 评论 -
使用hash和history实现前端路由切换,含完整源码
1.什么是路由路由最早出现在后端,也就是服务器端的路由,对于服务器来说,当接收到客户端发来的HTTP请求,就会根据所请求的相应URL,来找到相应的映射函数,然后执行该函数,并将函数的返回值发送给客户端。对于最简单的静态资源服务器,可以认为,所有URL的映射函数就是一个文件读取操作。对于动态资源,映射函数可能是一个数据库读取操作,也可能是进行一些数据的处理,等等。然后根据这些读取的数据,在服务器端...原创 2019-07-20 14:32:40 · 1224 阅读 · 0 评论 -
项目遇到的问题以及解决方法---小程序页面因数据量大带来问题的优化
一 、问题描述:小程序开发中开发一个城市列表选择页,如下:但是由于接口返回的城市数量过多,导致首屏白页的问题:怎么优化这个问题?1. 首先考虑是把接口返回数据存储为本地文件,进行本地加载,可以节约请求回显时间,但是这种做法并没有使问题获得改善,这表示接口返回应该是很快的,请求或者本地并不是主要影响,那么主要影响可能是在真机上数据太大导致列表渲染耗时太长。2. 采用本地、分段加载:把按照...原创 2019-02-20 15:22:58 · 6341 阅读 · 0 评论 -
读you don't know js提取自己没注意的点
1. == 和===区别之前理解:前者检查值的等价性,而后者检查值和类型两者的等价性,一般随意两者随意使用读书之后理解:前者在允许强制转换的条件下检查值的等价性,而后者是在不允许强制转换的条件下检查值的等价性。判断是何时使用哪个的规则:如果一个比较的两个值之一可能是true或false值,避免==而使用===如果一个比较的两个值之一可能是这些具体的值(0,"",或[] —— 空数组),避...原创 2019-02-20 13:27:05 · 141 阅读 · 0 评论 -
js高级程序设计(第三版)这一遍的总结——第二章在html中使用js
一、script元素的几个重要的属性1、src(可选)表示包含要执行代码的外部文件。带有src 属性的script元素不应该在其标签之间再包含额外的JavaScript 代码。如果包含了嵌入的代码,则只会下载并执行外部脚本文件,嵌入的代码会被忽略。无论如何包含代码,只要不存在defer 和async 属性,浏览器都会按照元素在页面中出现的先后顺序对它们依次进行解析,也就是阻塞执行。原创 2018-01-18 16:20:26 · 435 阅读 · 0 评论 -
js高级程序设计(第三版)这一遍的总结——第三章基本概念
一、undefined和null的区别我的理解:undefined 值是派生自null 值的,null多用于表示空对象指针,undefined多用于未经初始化的变量。无论在什么情况下都没有必要把一个变量的值显式地设置为undefined,可是同样的规则对null 却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null 值。之前不是特别理解上面的描述,原创 2018-01-19 15:36:39 · 459 阅读 · 0 评论 -
js高级程序设计(第三版)总结——第五章引用类型(Object类和Array类)
其实js中的引用类型就是java中的类,数据和功能和集合;对象就相当于类的实例。一、object类型js中的引用类型的值基本都是Object的实例,一般使用new操作符或者对象字面量的方法定义对象。var person = new Object();person.name = "Nicholas";var person = {name : "Nicholas",a...原创 2018-03-09 21:22:09 · 197 阅读 · 0 评论 -
js高级程序设计(第三版)总结——第五章引用类型(RegExp类和Function类)
一、RegExp类(正则类*)1、创建正则实例var expression1 = / pattern / flags ; pattern:模式; flags:标志(g,i,m)var expression2 = new RegExp("pattern", "flags");这两种方式在字符的转义上有很大的区别:RegExp 构造函数的模式参数是字符串,所以在某些情况下要对...原创 2018-03-12 14:23:57 · 281 阅读 · 0 评论 -
js高级程序设计(第三版)总结——第六章面向对象的程序设计
一、对象1、对象的创建(对象字面量)对象字面量var person = { name: "Nicholas", age: 29, job: "Software Engineer", sayName: function(){ alert(this.name); }};工厂模式function createPer...原创 2018-03-13 13:43:18 · 427 阅读 · 0 评论 -
es6中class继承的坑
1. es6继承的过程ES6 的继承机制和ES5完全不同,实质是先将父类实例对象的属性和方法,加到this上面(所以必须先调用super方法),然后再用子类的构造函数修改this。在子类的构造函数中,只有调用super之后,才可以使用this关键字,否则会报错。这是因为子类实例的构建,基于父类实例,只有super方法才能调用父类实例。2. super关键字super作为函数调用时,代表父类...原创 2018-11-23 11:40:37 · 1483 阅读 · 0 评论 -
坑货----win10下的node canvas
在安装node canvas的时候直接使用npm install canvas结果报错,具体可能由于canvas一堆依赖并依赖C++,于是查找资料,按照https://my.oschina.net/wangr15/blog/1540126操作的,装了一堆东西,然后依旧报错:C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Micros...原创 2019-01-30 19:20:22 · 1080 阅读 · 2 评论 -
项目遇到的问题以及解决方法---h5页面回退,保留前一个页面用户浏览位置
具体需求描述:一个h5的产品列表页,用户滑动列表页,当用户滑动到感兴趣的产品,点击进入详情页,浏览完详情页在回退到列表页能保留之前用户浏览位置。(react下开发)1.开始什么都没做,回退的时候自然无法保留用户浏览位置。2.然后考虑怎么解决,最开始的想法是保留scrolly的值,在回退的时候使用window.scrollTo()强制回退到上次浏览位置。但是这面临着一个问题,回退相当于重新加载页...原创 2019-02-22 17:55:17 · 2222 阅读 · 1 评论 -
使用抓包工具fiddler修改接口返回值进行调试
安装完fiddler, 配置https和Connections.配置完点击options-HTTPs右侧Action-导入证书到桌面。 然后在谷歌浏览器设置-高级-管理证书-受信任的跟证书颁发机构中导入fillder证书,重启fillder和浏览器。...原创 2019-02-18 16:54:14 · 2493 阅读 · 0 评论 -
js高级程序设计(第三版)这一遍的总结——第四章变量、作用域和内存问题
一、基本类型和引用类型1、基本类型的复制 基本类型复制之前和复制之后的两个值是完全独立的,并不会相互影响。2、引用类型的复制 引用变量在复制的时候复制的是变量的指针,复制操作结束后,两个变量实际上将引用同一个对象。3、参数传递ECMAScript 中所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样原创 2018-01-21 16:25:56 · 235 阅读 · 0 评论