前端——JS

JS面试题

基本数据类型

Number、String、Boolean、Null、Undefined、Symbol、bigInt

引用数据类型

object、Array、Date、Function、RegExp

在js中变量和函数的声明会提升到最顶部执行

函数的提升高于变量的提升

函数内部如果用 var 声明了相同名称的外部变量,函数将不再向上寻找。

匿名函数不会提升。

闭包就是能够读取其他函数内部变量的函数

闭包基本上就是一个函数内部返回一个函数

可以读取函数内部的变量

将变量始终保持在内存中

可以封装对象的私有属性和私有方法

比较耗费内存、使用不当会造成内存溢出的问题

==是非严格意义上的相等

值相等就相等

===是严格意义上的相等,会比较两边的数据类型和值大小

值和引用地址都相等才相等

this总是指向函数的直接调用者

如果有new关键字,this指向new出来的对象

在事件中,this指向触发这个事件的对象

for in

for

forEach

for-of

forEach 方法,是最基本的方法,就是遍历与循环,默认有 3 个传参:分别是遍历的数组内

容 item、数组索引 index、和当前遍历数组 Array

map 方法,基本用法与 forEach 一致,但是不同的,它会返回一个新的数组,所以 callback

需要有 return 值,如果没有,会返回 undefined

函数体内的 this 对象,就是定义时所在的对象,而不是使用时所在的对象

不可以当作构造函数,也就是说,不可以使用 new 命令,否则会抛出一个错误

不可以使用 arguments 对象,该对象在函数体内不存在。如果要用,可以用 Rest 参数代替

不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数

同源指的是域名、协议、端口号相同

jsonp跨域

document.domain + iframe 跨域

nodejs中间件代理跨域

后端在头部信息里面设置安全域名

变量必须声明后再使用函数的参数不能有同名属性,否则报错不能使用 with 语句禁止 this 指向全局对象

新增模板字符串箭头函数for-of(用来遍历数据—例如数组中的值。)ES6 将 Promise 对象纳入规范,提供了原生的 Promise 对象。增加了 let 和 const 命令,用来声明变量。还有就是引入 module 模块的概念

attribute 是 dom 元素在文档中作为 html 标签拥有的属性property 就是 dom 元素在 js 中作为对象拥有的属性。对于 html 的标准属性来说,attribute 和 property 是同步的,是会自动更新的但是对于自定义的属性来说,他们是不同步的

let 命令不存在变量提升,如果在 let 前使用,会导致报错如果块区中存在 let 和 const 命令,就会形成封闭作用域不允许重复声明const定义的是常量,不能修改,但是如果定义的是对象,可以修改对象内部的数据

定义:程序中己动态分配的堆内存由于某种原因程序未释放或无法释放引发的各种问题。js中可能出现的内存泄漏情况:结果:变慢,崩溃,延迟大等js中可能出现的内存泄漏原因全局变量dom 清空时,还存在引用定时器未清除子元素存在引起的内存泄露

map : 遍历数组,返回回调返回值组成的新数组forEach : 无法 break ,可以用 try/catch 中 throw new Error 来停止filter : 过滤some : 有一项返回 true ,则整体为 true every : 有一项返回 false ,则整体为 false join : 通过指定连接符生成字符串push / pop : 末尾推入和弹出,改变原数组, 返回推入/弹出项unshift / shift : 头部推入和弹出,改变原数组,返回操作项sort(fn) / reverse : 排序与反转,改变原数组concat : 连接数组,不影响原数组, 浅拷贝slice(start, end) : 返回截断后的新数组,不改变原数组splice(start,number,value…): 返回删除元素组成的数组,value 为插入项,改变原数组indexOf / lastIndexOf(value, fromIndex) : 查找数组项,返回对应的下标reduce / reduceRight(fn(prev, cur) ,defaultPrev) : 两两执行,prev 为上次化简函数的return 值,cur 为当前值(从第二项开始)

回调函数优点:简单、容易理解缺点:不利于维护、代码耦合高

事件监听优点:容易理解,可以绑定多个事件,每个事件可以指定多个回调函数缺点:事件驱动型,流程不够清晰

发布/订阅(观察者模式)类似于事件监听,但是可以通过’消息中心’,了解现在有多少发布者,多少订阅者

Promise 对象优点:可以利用 then 方法,进行链式写法;可以书写错误时的回调函数缺点:编写和理解,相对比较难

Generator 函数优点:函数体内外的数据交换、错误处理机制缺点:流程管理不方便

async 函数优点:内置执行器、更好的语义、更广的适用性、返回的是 Promise、结构清晰缺点:错误处理机制

基本思想是使用对象,类,继承,封装等基本概念来进行程序设计优点易维护易扩展开发工作的重用性、继承性高,降低重复工作量。缩短了开发周期

减少 HTTP 请求数减少 DNS 查询使用 CDN 避免重定向图片懒加载减少 DOM 元素数量减少 DOM 操作使用外部 JavaScript 和 CSS 压缩 JavaScript、CSS、字体、图片等优化 CSS Sprite 使用 iconfont 多域名分发划分内容到不同域名尽量减少 iframe 使用避免图片 src 为空把样式表放在 link 中把 JavaScript 放在页面底部

单线程 :只有一个线程,只能做一件事原因 : 避免 DOM 渲染的冲突浏览器需要渲染 DOM JS 可以修改 DOM 结构JS 执行的时候,浏览器 DOM 渲染会暂停两段 JS 也不能同时执行(都修改 DOM 就冲突了)webworker 支持多线程,但是不能访问 DOM 解决方案 :异步

单台服务器共同协作,不让其中某一台或几台超额工作,发挥服务器的最大作用http 重定向负载均衡:调度者根据策略选择服务器以 302 响应请求,缺点只有第一次有效果,后续操作维持在该服务器 dns 负载均衡:解析域名时,访问多个 ip 服务器中的一个(可监控性较弱)原因 – 避免 DOM 渲染的冲突反向代理负载均衡:访问统一的服务器,由服务器进行调度访问实际的某个服务器,对统一的服务器要求大,性能受到 服务器群的数量

作用域链可以理解为一组对象列表,包含 父级和自身的变量对象,因此我们便能通过作用域链访问到父级里声明的变量或者函数

所有的函数都有prototype属性(原型)所有的对象都有 proto属性在Javascript中,每个函数都有一个原型属性prototype指向自身的原型,而由这个函数创建的对象也有一个proto属性指向这个原型,而函数的原型是一个对象,所以这个对象也会有一个proto指向自己的原型,这样逐层深入直到Object对象的原型,这样就形成了原型链。

1.概述

js的垃圾回收机制是为了防止内存泄漏(已经不需要的某一块内存还一直存在着),垃圾回收机制就是不停歇的寻找这些不再使用的变量,并且释放掉它所指向的内存。在JS中,JS的执行环境会负责管理代码执行过程中使用的内存。

2.变量的生命周期

当一个变量的生命周期结束之后,它所指向的内存就会被释放。js有两种变量,局部变量和全局变量,局部变量是在他当前的函数中产生作用,当该函数结束之后,该变量内存会被释放,全局变量的话会一直存在,直到浏览器关闭为止。

3.js垃圾回收方式有两种方式: 标记清除、引用计数

引用计数:这种方式常常会引起内存的泄露,主要存在于低版本的浏览器。它的机制就是跟踪某一个值得引用次数,当声明一个变量并且将一个引用类型赋值给变量得时候引用次数加1,当这个变量指向其他一个时引用次数减1,当为0时出发回收机制进行回收。

逐进增强针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高版本浏览器进行效果、交互等改进和追加功能达到更好的用户体验。优雅降级一开始就构建完整的功能,然后再针对低版本浏览器进行兼容

Original: https://www.cnblogs.com/recorderM/p/16005010.html
Author: 紫英626
Title: 前端——JS

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572840/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • HTML笔记整理–上节

    一、认识WEB 「网页」主要是由 文字、 图像和 超&#x94…

    Java 2023年6月7日
    091
  • Hystrix 源码解读

    转载请注明出处: 1.引入依赖: 2. 查看自动配置类HystrixCircuitBreakerConfiguration 查看 org.springframework.cloud…

    Java 2023年6月8日
    059
  • JAVA设计模式之—抽象工厂模式(AbstractFactoty)

    一、概述 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 二、为何使用 工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在J…

    Java 2023年6月8日
    0100
  • 进程、线程、协程、例程、过程的区别是什么?

    400 Bad Request: 无效的请求。抱歉,给您带来麻烦了! 麻烦您发邮件至 contact@cnblogs.com 向我们反馈。 返回网站首页 Original: htt…

    Java 2023年5月30日
    082
  • SpringBoot 设置HTTP 响应状态码 (HTTP Status Code)

    SpringBoot 设置HTTP 响应状态码 (HTTP Status Code) HTTP请求响应的内容有很多,包括Body、Cookies、Headers和Status。我们…

    Java 2023年5月30日
    0161
  • SpringBoot集成thymeleaf模板

    1.在pom文件添加: org.springframework.boot spring-boot-starter-thymeleaf2.在html页面的头部添加 3.在java C…

    Java 2023年6月14日
    054
  • VueCLI使用

    怎样使用 @vue/cli创建并开发一个项目 不想每次都去翻视频,所以自己记录下 文章适用范围:使用纯粹的JavaScript进行开发的Vue项目 安装@vue/cli vue项目…

    Java 2023年6月7日
    080
  • java十题

    这是我收集的10个最棘手的Java面试问题列表。这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。你可能知道这些棘手的 Java 问题的答案,或者觉得这些不…

    Java 2023年5月29日
    047
  • 2 工具系统规划和实现的功能

    一:工具系统规划和实现的功能 主要技术点攻克: 1 :程序间调用和参数传递。 2 :数据文件对应多结构和内部变量定义多结构。 3 :调用程序间的同数据文件的数据结构。 4 :共通程…

    Java 2023年6月8日
    053
  • Micrometer + Prometheus 监控 Feign 调用实战

    可观测性是系统架构的基石,准确详细的度量是工程师的重要决策来源。对于微服务系统,除了传统意义上系统边界层的监控指标,服务内部调用的情况也需引起重视,这回就来分享下笔者在实现Feig…

    Java 2023年6月5日
    075
  • json2string json格式到string的转换,调试有时候可以用到

    是别人写的,好久已经忘记出处了,贴这有时候会再用到。 function json2string(strObject) {var c, i, l, s =”, v, p;…

    Java 2023年6月13日
    050
  • IO流简述

    IO流 1.什么是IO流 ​ java中所有的流都是子java.io下。首先我们看一下什么是IO,I就是Input,O就是Output,也就是输入输入的意思。 这里的输入输入都是相…

    Java 2023年6月9日
    074
  • 多线程(生产者和消费者问题【死锁–解决线程安全–等待唤醒机制—线程状态转换图】)

    Lock:————————–锁对象* void lock(): 获取锁。…

    Java 2023年6月5日
    090
  • vnpy源码阅读学习(4):自己写一个类似vnpy的UI框架

    自己写一个类似vnpy的界面框架 概述 通过之前3次对vnpy的界面代码的研究,我们去模仿做一个vn.py的大框架。巩固一下PyQt5的学习。 这部分的代码相对来说没有难度和深度,…

    Java 2023年6月7日
    085
  • HashTable HashMap concurrentHashMap区别

    HashTable HashMap concurrentHashMap区别 HashMap、HashTable、ConcurrentHashMap都是map接口的实现类 1.(同步…

    Java 2023年6月13日
    046
  • Linux常用命令及使用帮助

    转自吾爱破解,略有改动,发帖人已经找不到了,侵删 命令描述 保存不退出 不保存退出 强制退出 表示不保存退出,保留源文件,而另存为其他的文件,可以用 大写Z,保存退出 命令提示符 …

    Java 2023年6月5日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球