js基础面试题92-130道题目(js面试题及答案)
wptr33 2025-05-05 19:03 20 浏览
92.说说你对作用域链的理解
参考答案:作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到 window 对象即被终止,作用域链向下访问变量是不被允许的。
参与互动
93.JavaScript 原型,原型链 ? 有什么特点?
参考答案:
- 原型对象也是普通的对象,是对象一个自带隐式的 __proto__ 属性,原型也有可能有自己的原型,如果一个原型对象的原型不为 null 的话,我们就称之为原型链。
- 原型链是由一些用来继承和共享属性的对象组成的(有限的)对象链。
- JavaScript 的数据对象有那些属性值?
- writable:这个属性的值是否可以改。 configurable:这个属性的配置是否可以删除,修改。 enumerable:这个属性是否能在 for…in 循环中遍历出来或在 Object.keys 中列举出来。 value:属性值。
- 当我们需要一个属性的时,Javascript 引擎会先看当前对象中是否有这个属性, 如果没有的话,就会查找他的 Prototype 对象是否有这个属性。
function clone(proto) {
function Dummy() {}
Dummy.prototype = proto;
Dummy.prototype.constructor = Dummy;
return new Dummy(); //等价于Object.create(Person);
}
function object(old) {
function F() {}
F.prototype = old;
return new F();
}
var newObj = object(oldObject);
参与互动
94.请解释什么是事件代理
参考答案:
参与互动
95.offsetWidth/offsetHeight, clientWidth/clientHeight 与 scrollWidth/scrollHeight 的区别
参考答案:
参与互动
96.谈谈你对 AMD、CMD 的理解
参考答案:
参与互动
97.web 开发中会话跟踪的方法有哪些
参考答案:
参与互动
98.说几条写 JavaScript 的基本规范?
参考答案:
参与互动
99.JavaScript 有几种类型的值?你能画一下他们的内存图吗?
参考答案:
参与互动
100.eval 是做什么的?
参考答案:
1.它的功能是把对应的字符串解析成 JS 代码并运行 2.应该避免使用 eval,不安全,非常耗性能(2 次,一次解析成 js 语句,一次执行)
参与互动
101.js 延迟加载的方式有哪些?
参考答案:defer 和 async、动态创建 DOM 方式(用得最多)、按需异步载入 js
参与互动
102.attribute 和 property 的区别是什么?
参考答案:
参与互动
103.什么是面向对象编程及面向过程编程,它们的异同和优缺点
参考答案:
参与互动
104.谈一谈你理解的函数式编程?
参考答案:
参与互动
105.对原生 Javascript 了解程度
参考答案:
参与互动
106.Js 动画与 CSS 动画区别及相应实现
参考答案:
参与互动
107.快速的让一个数组乱序
参考答案:
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] console.log(arr.sort(() => 0.5 - Math.random()))
参与互动
108.prototype 和__proto__的关系是什么?
参考答案:
参与互动
109.UIWebView 和 JavaScript 之间是怎么交互的?
参考答案:
参与互动
110.IE 与火狐的事件机制有什么区别?如何阻止冒泡
参考答案:
1.我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。 2.事件处理机制:IE 是事件冒泡、火狐是 事件捕获; 3.ev.stopPropagation();
参与互动
111.在 js 中哪些会被隐式转换为 false
参考答案:Undefined、null、关键字 false、NaN、零、空字符串
参与互动
112.列举浏览器对象模型 BOM 里常用的至少 4 个对象,并列举 window 对象的常用方法至少 5 个?
参考答案:
对象:Window,document,location,screen,history,navigator。 方法:Alert(),confirm(),prompt(),open(),close()。
参与互动
113.class.forname 的作用? 为什么要用?
参考答案:
1、获取Class对象的方式:类名.class、对象.getClass()、Class.forName(“类名”);
2、通过Class对象自审
3、动态调用方法
参与互动
114.外部 JS 文件出现中文字符,会出现什么问题,怎么解决?
参考答案:会出现乱码,加 charset="GB2312";
参与互动
115.定时器 setInterval 有一个有名函数 fn1,setInterval(fn1, 500)与 setInterval(fn1(), 500)有什么区别?
参考答案:第一个是重复执行每 500 毫秒执行一次,后面一个只执行一次。
参与互动
116.自动分号
参考答案:有时 JavaScript 会自动为代码行补上缺失的分号,即自动分号插入(Automatic SemicolonInsertion,ASI)。
因为如果缺失了必要的 ; ,代码将无法运行,语言的容错性也会降低。ASI 能让我们忽略那些不必要的。
请注意,ASI 只在换行符处起作用,而不会在代码行的中间插入分号。
如果 JavaScript 解析器发现代码行可能因为缺失分号而导致错误,那么它就会自动补上分号。并且,只有在代码行末尾与换行符之间除了空格和注释之外没有别的内容时,它才会这样做。
参与互动
117.你用过 require.js吗?它有什么特性?
参考答案:
(1)实现 js 文件的异步加载,避免网页失去响应; (2)管理模块之间的依赖性,便于代码的编写和维护。
参与互动
118.如何阻止事件冒泡和默认事件?
参考答案:
阻止浏览器的默认行为 window.event?window.event.returnValue=false:e.preventDefault();
停止事件冒泡 window.event?window.event.cancelBubble=true:e.stopPropagation(); 原生 JavaScript 中,return false; 只阻止默认行为,不阻止冒泡,jQuery 中的 return false; 既阻止默认行为,又阻止冒泡
参与互动
119.分别阐述 split(), slice(), splice(), join()?
参考答案:
- join()用于把数组中的所有元素拼接起来放入一个字符串。所带的参数为分割字符串的分隔符,默认是以逗号分开。归属于 Array
- split()即把字符串分离开,以数组方式存储。归属于 Stringstring
- slice() 方法可从已有的数组中返回选定的元素。该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()
- splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。返回的是含有被删除的元素的数组。
参与互动
120.事件、IE 与火狐的事件机制有什么区别? 如何阻止冒泡?
参考答案:
1.我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为 2.事件处理机制:IE 是事件冒泡、firefox 同时支持两种事件模型,也就是:捕获型事件和冒泡型事件 3.ev.stopPropagation();
注意旧 ie 的方法:ev.cancelBubble = true;
参与互动
121.内置函数(原生函数)
参考答案:
- String
- Number
- Boolean
- Object
- Function
- Array
- Date
- RegExp
- Error
- Symbol
参与互动
122.对象浅拷贝和深拷贝有什么区别
参考答案:在 JS 中,除了基本数据类型,还存在对象、数组这种引用类型。 基本数据类型,拷贝是直接拷贝变量的值,而引用类型拷贝的其实是变量的地址。
let o1 = {a: 1}
let o2 = o1
在这种情况下,如果改变 o1 或 o2 其中一个值的话,另一个也会变,因为它们都指向同一个地址。
o2.a = 3
console.log(o1.a) // 3
而浅拷贝和深拷贝就是在这个基础之上做的区分,如果在拷贝这个对象的时候,只对基本数据类型进行了拷贝,而对引用数据类型只是进行了引用的传递,而没有重新创建一个新的对象,则认为是浅拷贝。反之,在对引用数据类型进行拷贝的时候,创建了一个新的对象,并且复制其内的成员变量,则认为是深拷贝。
参与互动
123.JS 怎么实现一个类。怎么实例化这个类
参考答案:严格来讲 js 中并没有类的概念,不过 js 中的函数可以作为构造函数来使用,通过 new 来实例化,其实函数本身也是一个对象。
参与互动
124.如何编写高性能的 Javascript?
参考答案:
- 使用 DocumentFragment 优化多次 append
- 通过模板元素 clone ,替代 createElement
- 使用一次 innerHTML 赋值代替构建 dom 元素
- 使用 firstChild 和 nextSibling 代替 childNodes 遍历 dom 元素
- 使用 Array 做为 StringBuffer ,代替字符串拼接的操作
- 将循环控制量保存到局部变量
- 顺序无关的遍历时,用 while 替代 for
- 将条件分支,按可能性顺序从高到低排列
- 在同一条件子的多( >2 )条件分支时,使用 switch 优于 if
- 使用三目运算符替代条件分支
- 需要不断执行的时候,优先考虑使用 setInterval
参与互动
125.数组和对象有哪些原生方法,列举一下?
参考答案:
- Array.concat( ) 连接数组
- Array.join( ) 将数组元素连接起来以构建一个字符串
- Array.length 数组的大小
- Array.pop( ) 删除并返回数组的最后一个元素
- Array.push( ) 给数组添加元素
- Array.reverse( ) 颠倒数组中元素的顺序
- Array.shift( ) 将元素移出数组
- Array.slice( ) 返回数组的一部分
- Array.sort( ) 对数组元素进行排序
- Array.splice( ) 插入、删除或替换数组的元素
- Array.toLocaleString( ) 把数组转换成局部字符串
- Array.toString( ) 将数组转换成一个字符串
- Array.unshift( ) 在数组头部插入一个元素
- Object.hasOwnProperty( ) 检查属性是否被继承
- Object.isPrototypeOf( ) 一个对象是否是另一个对象的原型
- Object.propertyIsEnumerable( ) 是否可以通过 for/in 循环看到属性
- Object.toLocaleString( ) 返回对象的本地字符串表示
- Object.toString( ) 定义一个对象的字符串表示
- Object.valueOf( ) 指定对象的原始值
参与互动
126.documen.write 和 innerHTML 的区别?
参考答案:
1.document.write 是重写整个 document, 写入内容是字符串的 html 2.innerHTML 是 HTMLElement 的属性,是一个元素的内部 html 内容
参与互动
127.让你自己设计实现一个 requireJS,你会怎么做?
参考答案:核心是实现 js 的加载模块,维护 js 的依赖关系,控制好文件加载的先后顺序
参与互动
128.requireJS 的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何缓存的?)
参考答案:核心是 js 的加载模块,通过正则匹配模块以及模块的依赖关系,保证文件加载的先后顺序,根据文件的路径对加载过的文件做了缓存
参与互动
129.Javascript 中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
参考答案:HasOwnProperty
参与互动
130.原型继承
参考答案:所有的 JS 对象都有一个 prototype 属性,指向它的原型对象。当试图访问一个对象的属性时,如果没有在该对象上找到,它还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。
相关推荐
- MySql系列-常用命令
-
本篇是对...
- Record.ToTable 格式转换
-
本期案例对表格格式进行转换,前后转换效果如下:解题套路1.Record.ToTable解题思路:思路就是构造可以透视的样式。使用Record.ToTable对行记录进行转换,获得包含两列的表,首行可以...
- Table.Group 按时期累计计算唯一值
-
本期案例是根据不同id进行汇总统计:组内,相同日期的为一组,统计“from”、“to”中的非重复个数;连续日期的,统计累计数。前后转换效果如下:解题套路1.Table.Group...
- MySQL 9.1正式发布,有哪些值得关注的新特性?
-
MySQL创新版9.1.0于2024年10月15日正式发布。此外,MySQL8.0.40及8.4.3补丁版本也同时发布。8.4.3是目前MySQL的LTS长期支持版本,该版本中将不会增加新的功能与特性...
- SQL基本语句练习(基础版)
-
最近在学习SQL基本语句的练习,在此分享一下笔者做过的练习以及个人的解决教程:首先是基本练习表格的搭建,具体内容如下表所示:...
- SQL 从入门到精通:全面掌握数据库操作
-
学习SQL(StructuredQueryLanguage)是掌握数据库操作的关键步骤。SQL是一种用于管理和处理关系型数据库的标准语言,广泛应用于数据检索、插入、更新和删除等操作。以下是一些...
- ClickHouse学习笔记四ClickHouse基础语法
-
前言这里我们介绍ClickHouse的基本语法,使用环境是腾讯云的ClickHouse。默认情况下,ClickHouse在进行集群纬度执行建表等DDL操作时需要手动添加ONCLUSTERX...
- 程序员总结的常用sql语句大全
-
多年经验程序员总结的我们一般需要使用的sql语句,赶快收藏起来,方便以后使用。以下是一些常用的SQL语句及其用法:一、数据定义语言(DDL)创建库CREATEDATABASE:创建一个新数据库。...
- PQ03-分组求和
-
目标已知:销售清单求:每个销售员的销量合计方法数据准备...
- 好荐:一款数据库元数据管理平台工具
-
“元数据”的定义在不同的软件、项目、工程的定义范围都不太一样。本文这里指的是软件项目开发使用的数据库表结构信息。我今天介绍的这个开源项目叫Databasir,它是一个面向团队的关系型数据库模型文档管理...
- MySQL 8.0 SQL优化黑科技,面试官都不一定知道!
-
前言提到SQL优化,大多数人想到的还是那些经典套路:建索引、避免全表扫描、优化JOIN顺序…这些确实是基础,但如果你还停留在MySQL5.7时代的优化思维,那就out了。MySQL8.0已经发布好...
- MySQL数据库深度优化指南:从基础到架构层面的20个关键策略
-
一、核心性能优化原则数据最小化原则...
- 动物源性食品中兽药残留的检测——喹啉类药物残留
-
喹啉类药物(quinoxaline)是具有喹啉-N1,N4-二氧化物基本结构的一类化学合成的动物专用药,具有广谱抗菌、提高饲料转化率和促生长作用。1965年德国拜耳公司以邻硝基苯胺为原料合成喹乙醇(o...
- 适合普通开发者和产品经理的PHP应用模板开发AI的SaaS应用框架
-
简单到傻!Liang_SaaS适合普通开发者和产品经理的PHP应用模板开发AI的SaaS应用框架,利用Php开发AI的SaaS应用框架,是一个强大的内容管理仪表板模板,基于Bootstrap和...
- Power Query 交错合并表格的方法
-
两张表格合并成一张表格,需要交错排列,表1取一行,表2取一行,这样排列在一起:前提是两张表的行数相同,内容排列顺序相同:我们来看两张表:表1:12列10行表2:11列10行行数相同列数不同,我们在数据...
- 一周热门
-
-
因果推断Matching方式实现代码 因果推断模型
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)