微信小程序学习笔记
1,简单介绍下 js
这个是今天早上在在听面试题的时候遇到的 感觉听了听被面试者的回答 我感觉还不够好于是自己就在网上查了一下
-
JavaScript一种直译式脚本语言
是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
-
组成部分
javascript组成一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:核心(ECMAScript)、文档对象模型(Document Object Model,简称DOM)、浏览器对象模型(Browser Object Model,简称BOM)。
-
对象
JavaScript的一个重要功能就是面向对象的功能,一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象
-
事件
用户与网页交互时产生的操作,称为事件。事件可以由用户引发,也可能是页面发生改变,甚至还有你看不见的事件(如Ajax的交互进度改变)。而对事件的处理,W3C的方法是用addEventListener()函数,它有三个参数:事件,引发的函数,是否使用事件捕捉。为了安全性,建议将第三个参数始终设置为false
2,js的两道面试题的总结
-
js函数也是对象
每一个javascript函数都是function对象
-
创建函数的常用方式
-
函数声名
function 函数名(){}
-
函数表达式
var 函数名 = function(){} 函数名()
-
函数构造
var sum3=new Function('n1','n2','return n1+n2'); console.log(sum3(2,3));//5
-
-
函数声明和函数表达式调用之间的区别
- 函数声明可以在任意一个位置调用,任意一个位置也就是在函数声明前后都可以调用
- 函数表达式就必须先定义再调用
- 函数声明有可以函数预加载 也就是说函数声明有函数提升的作用函数声明类似于var,而函数表达式类似于let
-
函数的作用域问题
作用域分为全局作用域,局部作用域,块级作用域
-
全局作用域:在任意位置都可以访问(函数内外都可以)
全局下定义的任意变量会追加到window
-
局部作用域:在 JavaScript 函数中声明的变量,会成为函数的局部变量。
局部变量的作用域是局部的:只能在函数内部访问它们。
-
块级作用域:这个是在ES6中新增的,‘块级作用域’通过新增命令let和const来体现。
一个块级作用域也就是一个大括号
-
3,类似于函数异步问题的几种问法
-
js的运行机制
-
js的事件循环机制
-
什么是宏任务,什么微任务
-
异步问题的解决方案
首先了解有哪些操作会触发异步函数
- 定时器
- DOM的事件绑定
- ajax请求
- …
接着就是怎么解决异步操作的问题、
- 利用回调函数
- promise管理
- async/await
然后就是看着今天的练习试题再次温习
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4T4IFafB-1597422160445)(C:\Users\22725\Desktop\微信图片_20200815000740.png)]
通过上图呢 首先是分出哪些是同步的 哪些是异步的
按照js执行顺序的的话 同步的函数应该是
console.log(“script start”)
async1()
new promise
console.log(“script end”)
所以改代码块的输出结果是
script start
async1 start
async2
promise1
script end
promise2
async1 end
settimeout
这个输出结果也牵扯了异步函数中微任务和宏任务的知识点
再来理以下函数的执行顺序:
同步–》异步
因为异步分为宏任务和微任务
所又因为微任务要比宏任务先执行所以:
异步–》微任务–》宏任务
微任务就是类似于.then后的就是微任务
宏任务就是类似于计时器和await