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

javascript 复制代码
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 复制代码
//修改javaScript上的valueOf方法,修改javaScript内置其他方法也类似
Object.prototype.valueOf = function(){
    console.log('123')
}

js的微任务和宏任务

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

js代码执行顺序

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

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

微任务:promise.then

宏任务:setTimeout

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

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

js的作用域

全局变量:挂载在window下面

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

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

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

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

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

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

区别

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

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

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

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

2.给函数传参形式不同

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

相关推荐
耶啵奶膘24 分钟前
uniapp-是否删除
linux·前端·uni-app
奋斗的小花生1 小时前
c++ 多态性
开发语言·c++
魔道不误砍柴功1 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
闲晨1 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
老猿讲编程1 小时前
一个例子来说明Ada语言的实时性支持
开发语言·ada
王哈哈^_^2 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
Chrikk2 小时前
Go-性能调优实战案例
开发语言·后端·golang
幼儿园老大*2 小时前
Go的环境搭建以及GoLand安装教程
开发语言·经验分享·后端·golang·go
canyuemanyue2 小时前
go语言连续监控事件并回调处理
开发语言·后端·golang
杜杜的man2 小时前
【go从零单排】go语言中的指针
开发语言·后端·golang