js知识总结

1. JS由那三部分组成?

  1. ECMASript
  2. 文档对象模型(DOM)
  3. 浏览器对象模型(BOM)

2. 操作数组的方法有那些?

  1. 高阶函数:map、filter、forEach、reduce、find、findIndex、every、some、
  2. push、unshift、shift、pop、splice、slice、join、concat、fill、indexOf、includes、reduceRight、reverse、sort、
    会改变原数组的方法:push、unshift、shift、pop、splice、join、reverse、sort

3. JS对数据类型的检测方法有哪些?

  1. typeof:只能判断出基本数据类型,不能区分引用类型。
  2. instanceof:只能判断出引用类型,不能区分基本类型。
    原理:判断实例对象的__proto__属性是否和构造函数的prototype属性指向同一个原型对象。如果没找到,则会在原型链上继续查找。
  3. Object.prototype.toString:最佳的方法。

4. 说一下闭包,以及特点。

  1. 如何产生闭包?
    -函数嵌套,内部函数引用了外部函数的(变量或函数)时,就产生了闭包
  2. 闭包的作用?
    使用闭包函数执行完成后,内部函数引用外部函数的数据(变量或函数)在存在内存中
    使函数外部可以操作到函数内部的数据
  3. 闭包的生命周期
    1. 产生: 在内部嵌套函数定义执行(不是真实执行)完成时就产生了(不是在调用)
    2. 死亡: 在内部嵌套函数成为垃圾对象时
function fn1() {
// 程序执行到此处时, 先函数提升然后变量提升(内部函数对象创建) 闭包出现 
// 因为有 var a = undefinedvar a = 2function fun() {console.log(++a)}return fun
}
var f = fn1()
f() // 3
f() // 4
// 此时没有死亡
f = null // 此时内部函数无引用指向 死亡
  1. 闭包的应用-定义js模块
    - 具有特定功能的js模块
    - 将所有的数据和方法都封装到一个函数的内部(私有的)
    - 只向外部暴露一个包含n个方法的对象或函数
    - 模块的使用者,只需要通过模块导出的对象调用方法来实现对应的功能。
/*方法一*/
function my_module() {var msg = 'songRuiXue'function doSomething() {console.log('doSomething' + msg.toUpperCase()) // msg: 全部大写}function doOtherthing() {console.log('doOtherthing' + msg.toLowerCase()) // msg: 全部小写}return {doSomething: doSomething,doOtherthing: doOtherthing}
}
/*方法二*/
(function(window) {var msg = 'songRuiXue'function doSomething() {console.log('doSomething' + msg.toUpperCase()) // msg: 全部大写}function doOtherthing() {console.log('doOtherthing' + msg.toLowerCase()) // msg: 全部小写}window.obj = {doSomething: doSomething,doOtherthing: doOtherthing}
})(window)调用
/*方法一*/
var obj = my_module()
obj.doSomething()
obj.doOtherthing()/*方法二*/
obj.doSomething()
obj.doOtherthing()

5. 事件冒泡、事件捕获及事件代理(事件委托)?

事件流(event flow)过程:事件捕获 -> 目标阶段 -> 事件冒泡
阻止冒泡:event.stopPropagation() (停止传播)
阻止默认行为:event.preventDefault() return false
return false 不仅阻止了事件往上冒泡,而且阻止了事件本身(默认事件)。event.stopPropagation()则只阻止事件往上冒泡,不阻止事件本身。
事件冒泡、事件捕获及事件代理

6. 说一下for…in 和 for…of的区别?

for...of遍历获取的是对象的键值,for...in遍历获取的是对象的键名
for...of只遍历当前对象不会去遍历原型链,for...in会遍历对象的整个原型链,性能差。
对于数组的遍历,for...of只返回数组下标对应的属性值。for...in会返回数组中所有可枚举的属性(包括原型链上可枚举的属性)。
总结:for...in主要用来遍历对象,不适合遍历数组。 for....of循环可以用来遍历数组、类数组对象、字符串、Set、Map以及Generator对象

7. 给 a b c 三个请求,希望 c 在 a b 获取结果之后再请求。

1. Promise.all

2. 使用数组实现

const fs = require('fs')const arr = []
function fn (data) {arr.push(data)if (arr.length === 2) {console.log(arr)// 在此时可以执行 c 的逻辑}
}
fs.readFile('./a.text', 'utf-8', (err, data) => {fn(data)
})
fs.readFile('./b.text', 'utf-8', (err, data) => {fn(data)
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(Ⅰ)

1.SQL概述 SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言 SQL的动词 基本概念 基本表 :本身独立存在的表; SQL中一个关系就对应一个基本表&am…

SecureCRT:高效安全的远程连接工具

SecureCRT是一款功能强大的终端仿真工具,主要用于连接和运行包括Windows、UNIX和VMS在内的远程系统。它支持多种协议,如SSH1、SSH2、Telnet、SFTP、Rlogin、Serial、SCP等,确保用户与目标设备之间的通信安全,并防止网络攻击和窥探…

spring-boot解析spring.factories文件

spring-boot解析spring.factories文件 启动SpringBoot自动装配的工厂类方法实现 /*** 解析 spring.factories 文件** return 读取到的所有数据*/private static Map<String, List<String>> loadSpringFactories(ClassLoader classLoader){try {Enumeration<URL…

HTTP系列之HTTP缓存 —— 强缓存和协商缓存

文章目录 HTTP缓存强缓存协商缓存状态码区别缓存优先级如何设置强缓存和协商缓存使用场景 HTTP缓存 HTTP缓存时利用HTTP响应头将所请求的资源在浏览器进行缓存&#xff0c;缓存方式分两种&#xff1a;强缓存和协商缓存。 浏览器缓存是指将之前请求过的资源在浏览器进行缓存&am…

安卓findViewById 的优化方案:ViewBinding与ButterKnife(一)

好多小伙伴现在还用findViewById来获取控件的id, 在这里提供俩种替代方案&#xff1a;ViewBinding与ButterKnife&#xff1b; 先来说说ButterKnife ButterKnife ButterKnife是一个专注于Android系统的View注入框架&#xff0c;在过去的项目中总是需要很多的findViewById来查…

用C++做一个植物大战僵尸

制作一个完整的“植物大战僵尸”游戏是一个非常大的项目&#xff0c;涉及图形渲染、碰撞检测、用户输入处理、音效、动画、游戏逻辑等多个方面。由于这个话题非常广泛&#xff0c;我可以提供一个简化的版本或者一个框架来启动你的项目。 以下是一个简化的框架&#xff0c;帮助…

java 实现发送邮件功能

今天分享一篇 java 发送 QQ 邮件的功能 环境&#xff1a; jdk 1.8 springboot 2.6.3 maven 3.9.6 邮件功能依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>&…

idea打包war包部署到tomcat以及访问路径问题

idea将web项目打包成war最重要的是配置atrificats。 首先打开file -》 project structure 创建之后&#xff0c;output directory即为输出war包的路径。Name可以随意&#xff0c;之后点击绿色&#xff0c;打开directory content 选择webapp目录&#xff0c;记得勾选include in…

Python从入门到精通秘籍十七

一、Python的构造方法 在Python中&#xff0c;构造方法是一个特殊的方法&#xff0c;用于创建和初始化类的实例。构造方法的名称是__init__()&#xff0c;它在创建对象时自动调用。 下面是一个示例代码来详细解释Python的构造方法&#xff1a; class Person:def __init__(se…

(C语言)浮点数在内存中的存储详解

1. 浮点数 常见的浮点数&#xff1a;3.14159、 1E10等 &#xff0c;浮点数家族包括&#xff1a; float、double、long double 类型。 浮点数表示的范围&#xff1a; float.h 中定义. 2. 浮点数的存储 我们先来看一串代码&#xff1a; int main() {int n 9;float* pFloa…

安全工具介绍 SCNR/Arachni

关于SCNR 原来叫Arachni 是开源的&#xff0c;现在是SCNR&#xff0c;商用工具了 可试用一个月 Arachni Web Application Security Scanner Framework 看名字就知道了&#xff0c;针对web app 的安全工具&#xff0c;DASTIAST吧 安装 安装之前先 sudo apt-get update sudo…

嵌入式数据库--SQLite

目录 1. SQLite数据库简介 2. SQLite数据库的安装 方式一&#xff1a; 方式二&#xff1a; 3. SQLite的命令用法 1.创建一个数据库 2.创建一张表 3.删除表 4.插入数据 5. 查询数据 6.删除表内一条数据 7.修改表中的数据 8.增加一列也就是增加一个字段 1. SQLite数据库…

C++ 【深基5.例3】冰雹猜想

文章目录 一、题目描述【深基5.例3】冰雹猜想题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 二、参考代码 一、题目描述 【深基5.例3】冰雹猜想 题目描述 给出一个正整数 n n n&#xff0c;然后对这个数字一直进行下面的操作&#xff1a;如果这个数字是奇数…

LeetCode每日一题——统计桌面上的不同数字

统计桌面上的不同数字OJ链接&#xff1a;2549. 统计桌面上的不同数字 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 这是一个很简单的数学问题&#xff1a; 当n 5时&#xff0c;因为n % 4 1&#xff0c;所以下一天4一定会被放上桌面 当n 4…

Linux系统 安装docker

安装&#xff1a; 1、Docker要求CentOS系统的内核版本高于 3.10 &#xff0c;通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2、更新yum包&#xff1a; sudo yum -y update 3、安装需要的软件包&#xff0c;yum-util 提供yum-config-manager功能&#xff0c;另外…

kvm虚拟化

kvm虚拟化 1. 虚拟化介绍 虚拟化是云计算的基础。简单的说&#xff0c;虚拟化使得在一台物理的服务器上可以跑多台虚拟机&#xff0c;虚拟机共享物理机的 CPU、内存、IO 硬件资源&#xff0c;但逻辑上虚拟机之间是相互隔离的。 物理机我们一般称为宿主机&#xff08;Host&…

深度学习pytorch——多层感知机反向传播(持续更新)

在讲解多层感知机反向传播之前&#xff0c;先来回顾一下多输出感知机的问题&#xff0c;下图是一个多输出感知机模型&#xff1a; 课时44 反向传播算法-1_哔哩哔哩_bilibili 根据上一次的分析深度学习pytorch——感知机&#xff08;Perceptron&#xff09;&#xff08;持续更新…

trt | TFLOPS TOPS含义

FLOPS是Floating-point Operations Per Second的缩写&#xff0c;代表每秒所执行的浮点运算次数。现在衡量计算能力的标准是TFLOPS&#xff08;每秒万亿次浮点运算&#xff09; NVIDIA显卡算力表&#xff1a;CUDA GPUs - Compute Capability | NVIDIA Developer 例如&#xf…

数学(算法竞赛、蓝桥杯)--快速幂

1、B站视频链接&#xff1a;G01 快速幂_哔哩哔哩_bilibili 题目链接&#xff1a;P1226 【模板】快速幂 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc.h> using namespace std; typedef long long LL; int a,b,p; int quickpow(LL a,int n,int p){…

Wear-Any-Way——可控虚拟试衣一键试穿,可自定义穿着方式

概述 Wear-Any-Way 是阿里巴巴最新推出的虚拟试衣技术&#xff0c;它不仅可以让用户在虚拟环境中试穿衣服&#xff0c;还可以根据需要自定义衣服的样式&#xff0c;比如卷起袖子、打开或拖动外套等。这种技术的引入旨在帮助消费者更好地了解衣服在不同穿着方式下的效果&#x…