百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

js基础面试题92-130道题目(js基础面试笔试题)

itomcoil 2025-04-05 19:26 6 浏览

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 属性,指向它的原型对象。当试图访问一个对象的属性时,如果没有在该对象上找到,它还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。

相关推荐

PS小技巧 调整命令,让人物肤色变得更加白皙 #后期修图

我们来看一下如何去将人物的皮肤变得更加的白皙。·首先选中图层,Ctrl键加J键复制一层。·打开这里的属性面板,选择快速操作删除背景,这样就会将人物进行单独的抠取。·接下来在上方去添加一个黑白调整图层,...

把人物肤色提亮的方法和技巧

PS后期调白肤色提亮照片的方法。一白遮百丑,所以对于Photoshop后期来说把人物肤色调白是一项非常重要的任务。就拿这张素材图片来说,这张素材图片人脸的肤色主要偏红、偏黄,也不够白皙,该怎样对它进行...

《Photoshop教程》把美女图片调成清爽色彩及润肤技巧

关注PS精品教程,每天不断更新~~室内人物图片一般会偏暗,人物脸部、肤色及背景会出现一些杂点。处理之前需要认真的给人物磨皮及美白,然后再整体润色。最终效果原图一、用修补工具及图章工具简单去除大一点的黑...

PS后期对皮肤进行美白的技巧

PS后期进行皮肤美白的技巧。PS后期对皮肤进行美白的技巧:·打开素材图片之后直接复制原图。·接下来直接点击上方的图像,选择应用图像命令。·在通道这里直接选择红通道,混合这里直接选择柔光,然后点击确定。...

493 [PS调色]调模特通透肤色

效果对比:效果图吧:1、光位图:2、拍摄参数:·快门:160;光圈:8;ISO:1003、步骤分解图:用曲线调整图层调出基本色调。用可选颜色调整图层调整红色、黄色、白色和灰色4种颜色的混合比例。用色彩...

先选肤色再涂面部,卡戴珊的摄影师透露:为明星拍完照后怎么修图

据英国媒体12月17日报道,真人秀明星金·卡戴珊终于承认,她把女儿小北P进了家族的圣诞贺卡,怪不得粉丝们都表示这张贺卡照得非常失败。上周,这位39岁的女星遭到了一些粉丝针对这张照片的批评,她于当地时间...

如何在PS中运用曲线复制另一张照片的色调

怎样把另一张作品的外观感觉,套用到自己的照片上?单靠肉眼来猜,可能很不容易,而来自BenSecret的教学,关键是在PS使用了两个工具,让你可以准确比较两张照片的曝光、色调与饱和度,方便你调整及复制...

PS在LAB模式下调出水嫩肤色的美女

本PS教程主要使用Photoshop使用LAB模式调出水嫩肤色的美女,教程调色比较独特。作者比较注重图片高光部分的颜色,增加质感及肤色调红润等都是在高光区域完成。尤其在Lab模式下,用高光选区调色后图...

在Photoshop图像后期处理中如何将人物皮肤处理得白皙通透

我们在人像后期处理中,需要将人物皮肤处理的白皙通透,处理方法很多,大多数都喜欢使用曲线、磨皮等进行调整,可以达到亮但是不透,最终效果往往不是很好,今天就教大家一种如何将任务皮肤处理得白皙通透,希望能帮...

PS调色自学教程:宝宝照片快速调通透,简单实用!

PS调色自学教程:宝宝照片快速调通透。·首先复制图层,然后选择进入ACR滤镜,选择曲线锁定照片的亮部,也就高光位置,其他部位补亮一点,尤其是阴影的部位补亮多一些,让画面的层次均匀一点。·然后回到基本项...

【干货】如何利用PS进行人物美化

人物图像美化在Photoshop中非常常用,Photoshop作为一款功能强大的图像处理软件,不仅可以对人像进行基本的调色、美化和修复等处理,还可以改变人物的线条和幅度,如调整脸部器官和脸型的大小、调...

教大家一种可以快速把肤色处理均匀的方法@抖音短视频

快速把肤色处理均匀的方法。今天教大家一种可以快速把肤色处理均匀的方法。像这张照片整体肤色走紫红色,但是局部偏黄缘处理起来非常的麻烦。其实我们只需要新建空白图层,图层混合模式更改为颜色,再选择画笔工具把...

PS调色教程 利用RAW调出干净通透的肤色

要么不发,要么干货。后期教程来噜~用RAW调出干净通透的肤色。这次终于不会原片比PS后好看了吧。如果你依然这么觉得,请不要残忍的告诉我这个事实,泪谢TAT)附送拍摄花絮,感谢各位的支持更多风格请关注m...

photoshop后期皮肤变白的技巧

PS后期皮肤变白的技巧。1.PS后期让皮肤变白的方法有很多种,接下来教你一种非常简单容易上手的方法。2.打开素材图片之后,直接在小太极下拉框的位置添加一个纯色调整图层,颜色设置一个纯白色,点击...

Photoshop调出人物的淡雅粉嫩肤色教程

本教程主要使用Photoshop调出人物的淡雅粉嫩肤色教程,最终的效果非常的通透迷人,下面让我们一起来学习.出自:86ps效果图:原图:1、打开原图复制一层。2、用Topaz滤镜磨皮(点此下载)。3、...