首页 > 其他分享 >js相关面试题

js相关面试题

时间:2023-04-11 10:46:13浏览次数:42  
标签:面试题 const 函数 console js 相关 执行 log

1.js的基础类型有什么?

基础类型有:null,NaN,string,number,boolean,bigint,symbol,undefine

引用类型有:object,Array,function

2.tyopef和instanceof的区别:

1.typeof可以识别所有的值类型,识别函数,能区分是否是引用类型

const a="str"  console.log(typeof a)   //string

const b=999  console.log(typeof b)   //number

const c=BigInt(9999999999999) console.log(typeof c)  // BigInt

const d= undefine console.log(typeof d)  //undefine

const  e=false  console.log(typeof e) //boolean

const f=Symbol console.log(typeof f) //symbol

const g=null console.log(typeof g) //object

instanceof用于检测构造函数的prototype属性是否出现在某个对象实例上

3.数组的map方法和foreach方法有哪些区别?常用哪些方法去对数组进行增删改查

  forEach是对数组的每一个元素执行一次给定的函数

  map是创建一个新数组,该数组由原数组的每个元素都调用一次提供的函数返回的值

  pop():删除数组后面的最后一个元素,返回被删除的那个元素

  push():讲一个或者多个元素添加到数组的末尾,并返回数组的长度

  shift():删除数组的第一个元素,返回被删除元素的值

  splice():通过删除或者替换现有元素添加到数组的开头,并返回该数组的长度

  reverse():反转数组

4.闭包和作用域

闭包是作用域应用的特殊场景,js中常见的作用域包括全局作用域,函数作用域,块级作用域。

js中自由变量的查找是在函数定义的地方向上级作用域查找,不是在执行的地方。常见的闭包使用有两种场景:一种是函数作为参数被传递;一种是函数作为返回值被返回

// 函数作为返回值
function create() {
let a = 100;
return function () {
console.log(a);
};
}

const fn = create();
const a = 200;
fn(); // 100

// 函数作为参数被传递
function print(fb) {
const b = 200;
fb();
}
const b = 100;
function fb() {
console.log(b);
}
print(fb); // 100

5.实现一个类似关键字new功能的函数

  在js中new关键字主要做了如下几点工作:

    1.创建一个空对象,这个对象会作为执行new函数之后返回的对象实例

    2.将穿件的空对象原型(_proto_)指向构造函数的prototype属性,同时将这个空对象给构造函数内部的this

    3.执行构造函数逻辑,根据构造函数的执行逻辑,返回初始创建的对象或构造函数的显式返回值

function newFn(...rags){

const constructor = args.shift();

const obj = Object.create(constructor.prototype);

const result = constructor.apply(obj,args);

  return typeof result === "object" && result !== null?result:obj

}

function Person(name){

this.name = name;

}

const p = newFn(Person,"Jerome");

console.log(p.name)

6.箭头函数和普通函数有什么区别

  箭头函数不会创建自身的this,只会从上一级继承this,箭头函数的this在定义的时候就已经确认了,之后不会改变,同时箭头函数无法作为构造函数使用,没有自身的prototype,也没有arguments

7.迭代器(iterator)接口和生成器(generator)函数的关系

  任意一个对象实现了遵守迭代器协议的[Symbol.iterator]方法,那么该对象就可以调用[Symbol.iterator]返回一个遍历器对象。生成器函数就是遍历器生成函数,故可以把generator赋值给对象的[Symbol.iterator]属性,从而使该对象具有迭代器接口。 8.浏览器的事件循环机制

首先要知道一件事,JavaScript是单线程的(指的是js引擎在执行代码的时候只有一个主线程,每次只能干一件事),同时还是非阻塞运行的(执行异步任务的时候,会先挂起相应任务,待异步返回结果再执行回调),这就要知道其事件的循环机制才能正确理解js代码的执行顺序。

在js代码执行时,会将对象存在堆(heap)中,在栈(stack)中存放一些基础类型变量和对象的指针。在执行方法时,会根据当前方法的执行上下文,来进行一个执行。对于普通函数就是正常的入栈出栈即可,涉及到异步任务的时候,js执行会将对应的任务放到事件队列中(微任务队列、宏任务队列)。

  • 常见微任务:queueMicrotask、Promise、MutationObserve等。
  • 常见宏任务:ajax、setTimeout、setInterval、script(js整体代码)、IO操作、UI交互、postMessage等。

故事件循环可以理解为是一个桥梁,连接着应用程序的js和系统调用之间的通道。其过程为:

  1. 执行一个宏任务(一般为一段script),若没有可选的宏任务,就直接处理微任务。
  2. 执行中遇到微任务,就将其添加到微任务的任务队列中。
  3. 执行中遇到宏任务,就将其提交到宏任务队列中。
  4. 执行完当前执行的宏任务后,去查询当前有无需要执行的微任务,有就执行
  5. 检查渲染,若需要渲染,浏览器执行渲染任务
  6. 渲染完毕后,Js线程会去执行下一个宏任务。。。(如此循环)

标签:面试题,const,函数,console,js,相关,执行,log
From: https://www.cnblogs.com/wanttobestronger/p/17305387.html

相关文章

  • three.js中某个物体跟随camera进行旋转
    constcamera=useThree().camera;constborderRef=useRef();useFrame(()=>{//通过反正切函数,获得在Y轴旋转的角度。由欧拉角定义可如此设置。borderRef.current.rotation.y=Math.atan2(camera.position.x,camera.position.z);})让玩家Object的朝向与摄像机相同,......
  • js获取视频时长
    //获取视频时长if(names.indexOf('mp4')>-1){constreader=newFileReader()constrs=reader.readAsArrayBuffer(file.file)letblob=nullreader.onload=(e)=>{if(typeofe.tar......
  • tnesorrt相关内容
    进入TensorRT-8.2.5.1/bin目录下输入命令【./trtexec--onnx=floater_v5--saveEngine=floater_v5.engine--buildOnly】将floater_v5.onnx文件转为floater_v5.engine ......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能聊天机器人从0到1快速入门——官网推荐的
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • kettle从入门到精通 第十一课 kettle javascript 解析json数组
    1、json步骤虽然可以解析json数组,但是不够灵活。通过javascript步骤来解析json数组比较灵活,且可以按照需要组装数据流转到下个步骤。1)步骤名称:可以自定义2)TransformScripts:当前步骤编写的javascript脚本3)TransformConstants:重新定义的静态常量,用于控制数据行发生的情况。您必......
  • #yyds干货盘点# LeetCode面试题:编辑距离
    1.简述:给你两个单词 word1和 word2,请返回将 word1 转换成 word2所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符 示例 1:输入:word1="horse",word2="ros"输出:3解释:horse->rorse(将'h'替换为'r')rorse->rose(......
  • js 数据转换问题
    题目将下面的数据结构[{"id":"1","pid":"","title":"标题1"},{"id":"2","pid":"1","title&qu......
  • Js中delete的作用
    JavaScript中的delete用于删除对象的属性或数组的元素。它可以让你删除一个对象的指定属性或数组的指定元素。以下是使用delete来删除一个对象的属性的示例:constperson={name:"John",age:30,city:"NewYork"};deleteperson.age;console.log(person);//输出......
  • JS-碰撞的小球
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=d......
  • JS函数的副作用你了解过吗?
    原文链接:   https://note.noxussj.top/?source=51cto什么是副作用?副作用会让一个函数变的不纯,纯函数是根据相同的输入返回相同的输出,如果函数依赖于外部的状态就无法保证输出相同,就会带来副作用。副作用来源函数依赖外部状态(变量),但是副作用不可能完全禁止,尽可能控制在它们可控范......