海口建站模板系统,个人网站 商业,手机做车载mp3下载网站,wordpress增加去购买Q1#xff1a;flex布局 Flex布局容器属性包括#xff1a; flex-direction: 定义主轴的方向#xff0c;决定flex容器中的子元素的排列方式 flex-wrap#xff1a;设置子元素是否换行 flex-flow#xff1a;是flex-direction和flex-wrap的简写形式#xff0c;用于设置容器的排…Q1flex布局 Flex布局容器属性包括 flex-direction: 定义主轴的方向决定flex容器中的子元素的排列方式 flex-wrap设置子元素是否换行 flex-flow是flex-direction和flex-wrap的简写形式用于设置容器的排列方式和是否换行 justify-content定义主轴上的子元素的排列方式 align-items定义侧轴上的子元素的排列方式 align-content当容器中的行为发生换行时定义侧轴上多行子元素的排列方式 Q2ES6的新功能 1.块级作用域ES6引入了let和const关键字可以在块级作用域中声明变量。使用let声明变量只在当前作用域内有效避免了变量提升和全局命名冲突的问题。而使用const声明的常量是一个只读变量一旦被赋值就不能再改变。 2.箭头函数箭头函数式ES6中的一种新的函数声明方式使用箭头取代了传统的funtion关键字箭头函数具有更简洁的语法并且自动绑定立刻上下文解决了毁掉含税中this指向问题。 3.解构赋值解构赋值是一种从数组或对象中提取并赋值给变量的语法。在ES6中可以使用解构赋值语法快速获取数组或对象中的元素简化了代码编写和数据交换。 4.默认参数ES6引入了函数的默认参数允许在函数定义时为参数提供默认值。如果调用未传递参数将使用默认值。这样可以简化函数的使用并且可以传递部分参数而不是全部参数。 5.扩展运算符扩展运算符可以将数组或对象展开提取出其中的元素。在函数调用或数组和对象字面量中使用...语法可以将数组或对象展开成独立的元素或将多个元素合并成数组对象。 6.模板字符串模版字符串时一种更方便的字符串拼接方式使用反引号‘定义字符串并可以在其中插入比那辆和表达式提高了代码的可读性和可维护性。 7.类和模块ES6引入了类的语法糖使得面向对象编程更加简洁和易用。类可以通过extends关键字实现继承使用super关键字调用父类的方法。此外ES6还引入了模块化的概念通过import和export关键字可以方便地导入和导出模块。 8.迭代器和生成器ES6中引入了迭代器和生成器的概念可以简化处理集合和异步变成的复杂度。迭代器是一个包含next()方法的对象可以按照定义的顺序诸葛返回值而生成器是一种特殊的函数可以通过field关键字将状态保存下来并在需要的时候恢复执行 9.Promise对象Promise是异步变成的额一种解决方案可以避免回调地狱和提供更好的错误处理。Promise对象可以表示一个异步操作的最终完成或失败并能够链式调用和处理多个异步操作。 10.模块化导入和导出ES6中模块化语法可以更好地组织和管理代码提供了import和export关键字以及export default关键字来导入和导出模块。 Q3promise的运行顺序 主任务 微任务then()、catch() 宏任务setTimeout、requestAnimationFrame 当我们new 一个Promise时,传入的回调函数为同步代码会立即执行而.then() .catch()里面的为异步微任务 Q4: forEach包裹asnyc函数和async for in 循环体里await的运行顺序
//forEach async/await的例子
function example1() {let promises [Promise.resolve(1),Promise.resolve(2),Promise.resolve(3),]promises.forEach(async (promise) {let result await promise;console.log(result)})console.log(4)console.log(5)
}
example1();
答4 5 1 2 3 content loaded 先执行console.log(4)这是因为JavaScript的异步处理机制。在你的代码中forEach循环中的每个Promise都被标记为async,这意味着它们将在后台运行而主线程将继续执行后面的代码。因此console.log(4)和console.log(5)将首先执行。 当你在javascript中年使用async/await时你实际上是在创建一个新的Promise。这个Promise在后台运行而主线程继续执行其他代码。当Promise完成时它的结果将被返回但这可能发生在主线程已经执行了代码之后 所以在例子中forEach循环中的Promise可能还在运行而主线程已经执行了console.log(4)和console.log(5)。这就是为什么你看到4和5首先被打印出来然后是1、2、3 Q5普通函数和箭头函数的this指向 普通函数this指向哪个对象调用的函数函数的this就指向谁否则指向全局this的指向在函数定义的时候是确定不了的只有函数执行的时候才能确定this指向谁 箭头函数this指向指向最外层作用域中的this所指对象 那js的编译和c c的编译有什么区别 C和JavaScript是两种不同类型的编程语言它们的编译和执行过程有很大的不同。C需要再编译期间将源代码编译成机器指令生成可执行文件后才能在特定操作系统上运行。而Javascript则是在解释器中逐步解析和执行源代码。在执行速度、调试难易程度、跨平台支持等方面C和Javascript都有各自的优缺点。 Q6变量提升和暂时性死区的相关概念 变量提升ES6明确规定如果区块存在let和const命令那么就会星程封闭作用域。凡是在声明之前使用这些变量就会报错。也就是说let、const声明的变量不会存在变量提升而var会 暂时性死区当程序的控制流程在新的作用域进行实例化时在此作用域中的let/const声明的变量会现在作用域中创建出来但此时还未在语法环境中进行注册没有语法绑定则此时是不能被访问的访问就会报错。 从创建变量到可以被访问这一瞬间叫做暂时性死区 Q7说一下你了解的http状态码401和 403的区别 401错误同城与身份验证问题相关而403错误则与权限相关 Q8: http的缓存机制cache-control 的nostore和 nocache的区别 Http的缓存机制旨在提高Web性能和减少带宽使用主要通过在客户端或代理服务器中存储相应数据来实现以便后续请求中复用这些数据。Http缓存可以分为两类强缓存和协商缓存。 no-store彻底禁用缓冲所有内容都不会被缓存到缓存或临时文件中 no-cache在浏览器使用缓存前会往返对比ETag如果ETag没变返回304则使用缓存使用no-cache的目的就是为了防止从缓存中获取过期的资源