for循环中用var和let的区别(为什么输出结果会不一样) 可以看到使用let声明的for循环每次执行值都会不断叠加,因为let声明的变量是块级作用域的,不存在变量提升,也不存在重复声明的情况,所以值会改变。可以看到它的输出结果,每次循环输出的均是同一个值,这是因为var是存在变量提升的,实际只执行一次,所以每次输出结果一样。
BOM重要知识讲解(系统对话框、history对象、间歇调用和超时调用、防抖和节流) 提示框的用途是提示用户输入消息。该方法返回一个数值ID,表示超时调用,这个超时调用ID是计划执行代码的唯一标识符通过它来取消超时调用。出于安全方面的考虑,开发人员无法得知用户浏览过的URL,不过借由用户访问过的页面列表,同样可以在不知道实际URL的情况下实现后退前进。先声明一个全局变量存储触发事件,每一次触发事件都获取当前时间,然后判断当前时间与上一次触发事件是否超过时间间隔,超过就执行事件处理代码,最后存储本次触发的时间。调用该方法也会返回一个间歇调用ID,该ID可以用户在将来某个时刻取消间歇调用。
Vue中computed(计算属性)、methods和watch(侦听器)的区别 计算属性有依赖缓存,如果值没有变化是不会重新调用计算属性的,也不处理异步请求;监听器监听值的变化,可以执行异步操作,像axios请求,它没有缓存性,只有当当前值变化时才会执行。
Vue中的模板语法(包括{{}}、v-html、v-on、v-bind、{{js表达式}}) 这里的v-for是循环遍历的意思,遍历数组和对象的属性值然后通过{{}}将变量值渲染出来。它跟原生js中的innerhtml是一样的,用来解析代码片段或者解析字符串。也可以用@来代替,用来绑定事件。可以用:来代替,用来绑定变量。
Vue中的生命周期(钩子函数) created是模板渲染成html前就调用,而mounted是渲染完成之后,通常用created会多一点,因为created是先初始化属性值再渲染图表,mounted是页面渲染完成后再对dom节点进行一些操作。定义:生命周期指的是vue实例创建到虚拟DOM产生再到数据绑定、监听数据渲染 ,最后再销毁的过程。可以发现,created和mounted都可以发送异步请求,那么它们有什么区别呢?
如何理解Vue中的MVVM? ViewModel是连接View和的一个纽带,数据模型发生了变化,vm通知视图修改;视图发生了变化,vm通知数据模型进行相对应的修改,它们是一个双向数据进行绑定的过程。从View来看,ViewModel中的。工具会帮我们监测页面上DOM元素的变化,如果有变化,则更改Model中的数据;从Model侧看,当我们更新Model中的数据时,工具会帮我们更新页面中的DOM元素。
Typescript(重点知识) 子类继承父类,子类中方法的签名和父类一样,子类的方法会重写父类的方法,采取就近原则的方式首先,抽象类没有实例化,也就是不能定义实例对象,抽象类存在抽象方法和非抽象方法,只要类里面有抽象方法,它就是抽象类。如果一个类继承了抽象类,那这个类会实现抽象类的所有方法,它也会成为抽象类接口就是抽象到极致的抽象类,如果一个类实现了接口,那么这个类要将接口中所有未实现的方法实现。那么怎么实现一个接口呢?有两种,类实现和对象实现。接口还可以继承,子接口继承父接口所有未实现的方法,ts中还可以进行多继承、多实现。
TypeScript typescript是javascript的超集,是在javascript的基础上转为强类型(js是弱类型语言),下面介绍一下它的特点。:typescript编译器可以安装在任何操作系统:typescript包含大部分es6中的特性,如箭头函数:类,接口,模块都有:编写代码时就可以发现编译时的错误而不需要运行脚本发现:js是动态类型,而typescript还允许可选的静态类型。
什么是Promise?作用?应用? Promise是异步编程的一种解决方案,它是一个容器,里面保存着某个未来才结束的事件的结果。语法来说它还是一个对象,获取异步的操作信息,提供统一的API,各种异步操作都可以用同样的方法处理。实例状态任意一个成功 返回的承诺对象状态就是成功。实例状态全部成功 返回的承诺对象状态才是成功。2.resolved(已完成),请求成功后返回的实例对象。3.rejected(已拒绝),请求失败后返回的实例对象。实例状态返回请求先成功得哪一个。第二个参数 代表得请求失败得回调函数。第一个参数 代表请求成功得回调函数。
ES6中的Map集合(它与Object的区别?) Map类似于集合,是键值对的集合,但“键”不限于字符串,各种类型的值包括对象都可以当作键,Object提供了“字符串-值”的对应,Map提供了“值-值”的对应,需要“键值对”的数据结构时Map比Object合适。一个 Object 有一个原型, 原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。3.Map 中的 key 是有序的。因此,当迭代的时候,一个 Map 对象以插入的顺序返回键值。5.Map是iterable的,可以直接被迭代,而Object需要以某种方式获取它的键才能被迭代。
什么是跨域?(包括同源策略以及解决跨域问题的方法) 当一个资源去访问另一个不同域名或者同域名不同端口的资源时,发出跨域请求,如果另一个资源不允许访问就会出现跨域问题。跨域指的是浏览器不能执行其它网站的脚本。是由浏览器的同源策略造成的,是浏览器对JavaScript 施加的安全限制。
ES6新增的基本数据类型Symbol ES6引入的一种新的原始数据类型Symbol,表示独一无二的值。Symbol函数可以接受参数,表示对于这个唯一值的描述。属于基本数据类型,Symbol()函数会返回symbol类型的值。它有三个作用,以下分别介绍,可以通过运行结果查看。
JSON(定义,语法规则,字符串化目的,解析JSON字符串) JSON(JavaScript Object Notation)是一种用于数据交换的轻量级格式。它基于 JavaScript 语言的一个子集,对象是在 JavaScript 中构建的。
前端中的模块化(包括es6模块化和commonjs模块化) 一个模块包含一个或多个js文件,一个模块中一般还包含一个package.json文件,该文件中包含了模块的配置信息,里面的配置信息有:name 模块名称version 模块版本description 描述信息main 指定模块入口文件type 当type值为module的时候,支持es模块化scripts 脚本,使用' npm run 脚本名'可以调用dependencies 依赖关系devDependencies 环境依赖或测试依赖。
ES6代码转ES5代码 在开发中我们可能会遇到需要将代码进行将版本的处理,这时就需要进行转码的操作,我们将用babel实现ES6代码转成ES5代码。npm init,也可以使用npm init -y,如果使用后者是为了快速初始化项目,因为这里的y指的是yes/no里的y,默认将提问是否需要继续执行下去的环节去掉而直接执行。可以看到初始化项目之后会生成一个package.json的文件。
JS中的变量提升(var、let、const的区别) 分别说一下它们的特点,var会变量提升,可以重复声明,不具有局部作用域;而let和const都不会变量提升,也不能重复声明,但具有局部作用域,特别需要注意的是,const一般用来声明常量,声明时必须赋值,例如声明数组或者const pi=3.14这种数学常量。变量提升是指js中的变量和函数会在代码编译之前,提升到代码的最前面,前提是使用var声明变量,而使用let或者const变量就不会提升,变量提升时只有声明会被提升,赋值则不会,函数声明提升比变量声明优先级要高。
相对定位、绝对定位、固定定位、粘滞定位、静态定位有什么区别? 2.默认定位元素,无论有没有祖先元素,相对于body定位。3.祖先元素设置了定位,相对于祖先元素定位(就近原则)特点:不脱离文档流 相对于自身在浏览器中的位置定位。特点:1.脱离文档流 原先位置不保留。特点:1.脱离文档流 原先位置不保留。2.相对于浏览器视口区域。2.没有达到阈值前相对定位。特点:1.不脱离文档流。特点:默认文档流定位。达到阈值就是固定定位。