js知识库

script标签的async和defer作用及区别

1)都会起到延迟执行js的作用

2)defer:先进行html解析,解析过程中会下载js文件,但不会执行;当html完全解析完,才会执行js部分。多个用defer修饰的js是顺序执行的。

3)async :async修改的js文件,下载和执行是和html解析同步的;多个用async 修饰的js不是顺序执行的,哪个js先加载完哪个先执行。

js数据类型有哪些

基本数据类型:String、Number、Boolean、undefined、null、symbol

引用数据类型:Object

console.log(true + 1) //2
//字符串和任何类型 相加,其他类型将被隐式转换为字符串
console.log('name'+true) //'nametrue'
console.log(undefined + 1)// NaN (NaN为number类型)
console.log(typeof null)//Object
console.log(typeof NaN)//Number
console.log(typeof undefined) //undefined

null和undefined含义及区别

1) javascript作者在设计js语言最先设计了null,待表“无”的值。

2)null被设计成可以隐式转换为0。

3)具体区别:null是一个表示“无”的对象(空对象指针),转为数值时为0;undefined是表示一个“无”的原始值,转换数值时为NAN。

==和===有什么区别

1)==:比较的是值,不对比数据类型,比较时不同类型的值会被隐式转换为同一类型(转换为基础数据类型)自动转换,不显示在代码中。

2)===:不但比较值,还比较数据的类型

注意:隐式转换用的方法是valueOf()

拓展:

//修改javaScript上的valueOf方法,修改javaScript内置其他方法也类似
Object.prototype.valueOf = function(){console.log('123')
}

js的微任务和宏任务

js是单线程的语言,同一时间只能做一件事;单线程语言设计的原因:javaScript主要用途是实现交互及操作dom,如果同时存在2个线程,一个添加节点、一个删除这个节点,这时浏览器不知道应该以哪个线程为准。设计为单线程语言,避免了很多复杂的同步问题。

js代码执行顺序

js先执行同步任务 ,执行完之后才会进入到事件循环中。进入事件循环:请求ajax、定时器、事件

事件循环包含【微任务、宏任务】 

微任务:promise.then

宏任务:setTimeout

流程:同步 ==》事件循环【微任务和宏任务】==》微任务==》宏任务=》微任务

执行宏任务前提,把微任务清完

js的作用域

全局变量:挂载在window下面

局部变量:挂在到函数内部

 作用域链:函数内部可以访问外面的变量,外部不可以访问函数内部的变量。如果函数内部有,先取函数内部的。注意变量提升。

优先级:声明变量 > 声明函数

function fun(){var a = 10function a(){}    //可以进行变量提升console.log(a)//a为10
}
fun()
function fun1(){var a = 10var a = funciton(){}    //不能进行变量提升console.log(a)//a为函数
}
fun1()

call、applay、bind的共同点及区别

共同点:都能改变函数的this指向

区别

1.改变this指向后函数的执行顺序不同

call:改变完this的指向后,并立即执行函数

apply:改变完this的指向后,并立即执行函数

bind:改变完this的指向,并返回一个函数,得手动调用一下函数才能执行

2.给函数传参形式不同

call和bind都是一个一个参数传递,apply是数组形式传递

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

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

相关文章

速卖通vs亚马逊vs虾皮,三大跨境电商平台详细对比

近几年跨境电商行业可以说是十分火热,跨境电商平台也是非常多,如亚马逊、速卖通、虾皮、lazada等等。今天就给大家分享速卖通、亚马逊和虾皮这三个平台之间的区别,帮助大家快速找到适合自己的平台。 三大跨境电商平台详细对比 速卖通 &#x…

视图地一些笔记

1. 创建视图(CREATE VIEW)时,通常不会输出任何结果集。它只是一种定义逻辑视图的方式,在数据库中保存一个查询定义。要查看视图中的内容,你需要使用 SELECT 语句查询该视图。例如,如果你创建了名为 new_us…

神经网络的基础:从感知机到复杂网络的进化

文章目录 一、神经网络的例子二、理解神经信号的传递2.1 感知机的结构和功能2.2 优化函数2.3 明确表示偏置 三、理解感知机和激活函数的作用3.1 基础感知机模型3.2 激活函数的引入 一、神经网络的例子 理解感知机 在探索神经网络之前,我们首先回顾了感知机的基本概…

iOS抓包工具——Stream

[清风穆云 ](https://cloud.tencent.com/developer/user/4224041) iOS抓包工具——Stream 关注作者 前往小程序,Get_更优_阅读体验! 立即前往 腾讯云 开发者社区 文档建议反馈控制台 首页 学习 活动 专区 工具 TVP [最新优惠活动 ](http…

关键字标识

题目描述 给定一个关键词集合 words 和一个字符串 inputStr,要求将 inputStr 中出现的所有关键词用标签标记: 关键词标签的起始为,结束为。 把可以合并的标签进行合并,即使用最少的标签。合并规则如下: 关键词相邻则进行合并,如 ab、cd为关键词,且在字符串中相邻,则合…

gtest Unitest 打桩优化

接口(宏)简单介绍 SMOCK StubMock类的单例对象 V_ADDR 获取类虚拟函数地址 O_ADDR 获取重载函数地址(只支持类成员函数) NF_SMOCK 函数打桩 F_SMOCK 函数打桩,会去调用NF_SMOCK,调用时默认第一个参数为0 SMOCK_CLEAR 清除所有…

可视化实验三 Matplotlib库绘图及时变数据可视化

1.1 任务一 1.1.1 恢复默认配置 #绘图风格,恢复默认配置 plt.rcParams.update(plt.rcParamsDefault)#恢复默认配置 或者 plt.rcdefaults() 1.1.2 汉字和负号的设置 import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"]"SimH…

java设计模式七 适配器

适配器模式(Adapter Pattern)是一种结构型设计模式,它的核心思想是将一个接口转换成客户端期望的另一个接口,使得原本不兼容的接口可以协同工作。在Java中,适配器模式可以通过类继承或对象组合的方式来实现。 ### Jav…

物体移动方向和转向问题

比如在屏幕中有一条鱼,它可以向左或向右移动,固定时间旋转方向调换移动方向。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class fishMove: MonoBehaviour {public int speed 3;public Vector3 moveDirec…

Vue3 路由入门

先安装路由 npm i vue-router //创建路由器 import { createRouter, createWebHashHistory } from vue-router//1.导入组件 import Home from /components/Home.vue import News from /components/News.vue//2.配置路由映射规则 const routes [{name: home,path: /home,compo…

学习方法的重要性

原贴:https://www.cnblogs.com/feily/p/13999204.html 原贴:https://36kr.com/p/1236733055209095 1、 “一万小时定律”的正确和误区 正确: 天才和大师的非凡,不是真的天资超人一等,而是付出了持续不断的努力&…

Java数组创建与使用

一.创建和初始化 1.数组是怎么创建的? 直接举例子: int[] arr new int[10]; 这里只简单的举一个int开辟数组的例子。 可见java数组的创建于C语言是不同的。前面是一个int[ ]就是一个数组的数据类型,后面的arr是数组名,最后[…

OpenCV | 项目 | 虚拟绘画

OpenCV | 项目 | 虚拟绘画 捕捉摄像头 如果在虚拟机中运行&#xff0c;请确保虚拟机摄像头打开。 #include<opencv2/opencv.hpp>using namespace cv; using namespace std;int main() {VideoCapture cap(0);Mat img;while(1) {cap.read(img);imshow("Image"…

stm32 st7735驱动 详解

初始化指令 void LCD_Init(void) { #if USE_SIM_SPILCD_SIM_SPI_GPIO_Init(); #endifLCD_RES_0();//复位HAL_Delay(100);LCD_RES_1();HAL_Delay(100);LCD_BLK_1();//打开背光HAL_Delay(100);//************* Start Initial Sequence **********//LCD_SPI_Send_Cmd(0x11); //Sl…

华为eNSP综合实验-网络地址转换

实验完成之后,在AR1的g0/0/1接口抓包,查看地址转换 实现私网pc访问公网pc 实验命令展示 SW1: vlan batch 12 #创建vlan interface e0/0/1 #进入接口配置vlan端口 port link-type access port default vlan 12 q interface e0/0/2 #进入接口配置vlan端口 port link-type ac…

想要买到心仪的旋转式孔板流量计吗?

选择旋转式孔板流量计可不能云里雾里的乱选择呀&#xff0c;煤矿对产品质量要求很严格的。所以我们要先了解产品的再决定才是对的选择。 旋转式孔板流量计技术参数【1--5--9】 规格&#xff1a;DN15&#xff5e;DN1000 孔径比(βd/D)&#xff1a;β0&#xff0e;2—0&#xff…

数组中两个字符串的最小距离

给定一个字符串数组strs&#xff0c;再给定两个字符串str1和str2&#xff0c;返回在strs中str1和str2的最小距离&#xff0c;如果str1或str2为null&#xff0c;或不在strs中&#xff0c;返回-1。 输入描述&#xff1a; 输入包含有多行&#xff0c;第一输入一个整数n(1 ≤ n ≤…

Vue2简易登录注册模版(基于ElementUI)

Vue简易登录注册模版(基于ElementUI) 目录 Vue简易登录注册模版(基于ElementUI)Login.vueRegister.vue Login.vue <script> import RegisterView from /components/register.vueexport default {name: LoginView,data() {// 用户名规则const checkUsername (rule, valu…

node.js安装及环境配置超详细教程【Windows系统安装包方式】

Step1&#xff1a;下载安装包 https://nodejs.org/zh-cn/download/ 根据自己电脑系统及位数选择&#xff0c;我的电脑是Windows系统、64位、想下载稳定版的.msi&#xff08;LTS为长期稳定版&#xff09;这里选择windows64位.msi格式安装包。 .msi和.zip格式区别&#xff1a;…

3.yolov5训练前的图片处理详解(python)

其实&#xff0c;yolov5模型可以分为深度网络、数据处理&#xff08;图片处理&#xff09;、损失函数、优化器选择、训练和预测及部分构成&#xff0c;相信大家对训练和预测的代码比较熟悉。前面两章我们根据代码和结构图了解了yolov5的深度网络&#xff0c;接下来看数据处理的…