2021年js面试题整体

2021年js面试题整体介绍 JavaScript 的基本数据类型 Number String Boolean Null UndefinedObj 是 js 中所有对象的父对象新类型 Symbol 说说 js 的基本规范 1 不要在同一行生命多个变量 2 使用 或 来比较 true false 或者数值 3 switch 必须带有 default 分支 4 函数应该有返回值 5 forifelse 必须使用大括号 6 语句结束加分号 7 命名要有意义 使用驼峰命名法 Ajax 使用所谓异步 就是向服务器发送请求的时候

介绍JavaScript的基本数据类型
Number、String 、Boolean 、 Null 、Undefined
Object是js中所有对象的父对象
新类型:Symbol






说说js的基本规范
1、不要在同一行声明多个变量
2、使用 === 或 !== 来比较true/false或者数值
3、switch必须带有default分支
4、函数应该有返回值
5、for if else 必须使用大括号
6、语句结束加分号
7、命名要有意义,使用驼峰命名法














Ajax使用
所谓异步,就是向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,于此同时,页面是不会发生整页刷新的,提高了用户体验
创建Ajax的过程
1、创建XMLHttpRequest对象(异步调用对象)






var xhr = new XMLHttpRequest(); 

2、创建新的Http请求

xhr.open('get','example.php',falset) 

3、设置响应Http请求状态变化的函数

4、发送http请求

xhr.send(data); 

JavaScript有几种类型的值?你能画一下他们的内存图吗
基本数据类型存储在栈中,引用数据类型(对象)存储在堆中,指针放在栈中
两种类型的区别是:存储位置不同;原始数据类型直接存储在栈中的简单数据段,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储; 引用数据类型存储在堆中的对象,占据空间大、大小不固定,如果存储在栈中,将会影响程序运行的性能
引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体






栈和堆的区别
栈(stack):由编译器自动分配释放,存放函数的参数值,局部变量等
堆(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由操作系统释放




JavaScript作用域链
作用域链的原理和原型链很类似,如果这个变量在自己的作用域中没有,那么它会寻找父级的,直到最顶层
注意:js没有块级作用域,若要形成块级作用域,可通过(function() {})();立即执行的形式实现。




谈谈this的理解
1)this总是指向函数的直接调用者(而非间接调用者)
2)如果有new关键字,this指向new出来的那个对象
3)在事件中,this指向目标元素,特殊的是IE的attachEvent中的this总是指向全局对象window






什么是window对象?什么是document对象?
window对象代表浏览器中打开的一个窗口。document对象代表整个html文档。实际上,document对象是window对象的一个属性。

什么是闭包,为什么要用它
闭包指的是一个函数可以访问另一个函数作用域中的变量。常见的构造方法,是在一个函数内部定义另外一个函数。内部函数可以引用外层函数的变量;外层变量不会被垃圾回收机制回收。
注意:闭包的原理是作用域链,所以闭包访问的上级作用域中的变量是个对象,其值为其运算结束后的最后一个值。
优点:避免全局变量污染。
缺点:容易造成内存泄露
例子:










function makeFunc () { 
    var name = "Mozilla"; function displayName () { 
    console.log(name) } return displayName; } var myFunc = makeFunc(); myFunc(); //输出Mozilla 

myFunc 变成一个 闭包。闭包是一种特殊的对象。它由两部分构成:函数,以及创建该函数的环境。环境由闭包创建时在作用域中的任何局部变量组成。在我们的例子中,myFunc是一个闭包,由displayName函数和闭包创建时存在的”mozilla”字符串形成。

javascript代码中的“use strict”;是什么意思?使用它区别是什么?
除了正常模式运行外,ECMAScript添加了第二种运行模式:“严格模式”。
作用:
1)消除js不合理、不严谨地方,减少怪异行为
2)消除代码运行的不安全之处
3)提高编译器的效率,增加运行速度
4)为未来的js新版本做铺垫












如何判断一个对象是否属于某个类
使用instanceof 即if(a instanceof Person) {alert(‘yes’)}

new操作符具体干了什么呢
1)创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型
2)属性和方法被加入到this引用的对象中
3)新创建的对象由this所引用,并且最后隐式的返回this






javascript中,执行时对象查找时,永远不会去查找原型的函数?
Object.hasOwnProperty(proName):是用来判断一个对象是否有你给出名称的属性。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。

对JSON的了解
全称:JavaScript Object Notation
JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“aaa”: “123” },对象的值是键值对的形式(key: value).JSON是JS的一个严格的子集,一种轻量级的数据交换格式,类似于xml。数据格式简单,易于读写,占用宽带小
两个函数:
JSON.parse(str) // 解析JSON字符串变成js值或对象
JSON.stringify(obj) // 将一个js值(对象或者数组)转换为一个JSON字符串
eval(‘(’+json + ‘)’) //用eval方法注意加括号,而且这种方法更容易被攻击 不建议使用












js延迟加载的方式有哪些
js的延迟加载有助于提高页面的加载速度。
defer和async、动态创建DOM方式(用得最多)、按需异步载入js
defer:延迟脚本。立即下载,但延迟执行(延迟到整个页面都解析完毕后再运行),按照脚本出现的先后顺序执行。
async:异步脚本。下载完立即执行,但不保证按照脚本出现的先后顺序执行








什么是跨域问题,如何解决跨域问题?
因为浏览器有同源策略,如果协议(http或者https)不同、端口不同、主机不同,三者满足其一即产生跨域,跨域的解决方案最优的是cors

call和apply
call() 方法和apply() 方法的作用相同,动态改变某个类的某个方法的运行环境。他们的区别在于接收参数的方式不同。在使用call()方法时,传递给函数的参数必须逐个列举出来。使用apply()时,传递给函数的是参数数组。

回流与重绘
当渲染树中的一部分(或全部)因为元素的规模尺寸、布局,隐藏等改变而需要重新构建。这就成为回流(reflow)。每个页面至少需要一次回流,就是在页面第一次加载的时候。在回流的时候,浏览器会使渲染树中收到影响的部分失效,并重新构造这部分渲染树。完成回流后,浏览器会重新绘制受影响的部分到屏幕中,该过程成为重绘。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/173780.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月27日 上午8:00
下一篇 2026年3月27日 上午8:01


相关推荐

  • 2021最强Python学习教程,从零基础入门到精通

    2021最强Python学习教程,从零基础入门到精通你准备好了吗???areyouready???前言01.python介绍02.项目开发完整流程(详解版)03.项目开发流程(精简版)第一篇计算机核心基础01计算机组成原理第二篇编程语言01编程语言介绍第三篇python入门01python介绍及IDE集成开发环境02python是解释型的强类型动态语言03python语法之变量、常量04python语法之注释05python垃圾回收机制GC06Python语法入门之基本数据类型07Python语法

    2026年1月26日
    4
  • pycharm2021.8.3永久激活码[最新免费获取]

    (pycharm2021.8.3永久激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月25日
    77
  • SecureCRT中文乱码,导致上传到nginx上的文件乱码,访问报404「建议收藏」

    SecureCRT中文乱码,导致上传到nginx上的文件乱码,访问报404「建议收藏」问题背景:因使用secureCRT工具,上传文件到linux系统nginx服务上,因部分文件名包含中文,导致访问路径报错404,查看时显示乱码等问题。一般解决办法1.右键点击SecureCRT的连接标签。2.在弹出的窗口中,左边栏选择“外观”选项卡,在右边的窗口中选择UTF8,如图所示:3.此时,SecureCRT中即可正常显示中文了:此时虽然可以显示中文,但是在SecureF…

    2022年7月17日
    18
  • kettle工具的简单使用

    kettle工具的简单使用1.使用kettle抽取CSV文件通过Kettle工具抽取CSV文件csv_extract.csv中的数据并保存至数据库extract的数据表csv中。(1)、创建一个转换通过使用Kettle工具,创建一个转换csv_extract,并添加“CSV文件输入”控件、“表输出”控件以及Hop跳连接线,具体如图所示。(2)、配置CSV输入插件双击“CSV文件输入”控件,进入“CSV文件输入”界面。完成配置。单击【浏览】按钮,选择要抽取的文件csv_extract.c…

    2022年10月16日
    4
  • 请说下封装 vue 组件的过程?_组件二次封装的必要性

    请说下封装 vue 组件的过程?_组件二次封装的必要性vue组件的定义●组件(Component)是Vue.js最强大的功能之一●组件可以扩展HTML元素,封装可重用代码●在较高层面上,组件是自定义元素,Vue.js的编译器为他添加特殊功能●有些情况下,组件也可以表现用is 特性进行了扩展的原生的HTML元素●所有的Vue组件同时也都是Vue实例,所以可以接受相同的选项对象(除了一些根级特有的选项),并提供相同的生命周…

    2026年3月3日
    4
  • 2021微信小程序反编译(小程序反编译工具)

    该网站是小程序反编译社区,永久免费开放下载所有反编译的小程序https://unpack.marchccc.top/

    2022年4月12日
    336

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号