目录

1.js有哪些数据类型?

2.说一下对闭包的理解,有什么运用场景?

3.对js中原型及原型链的理解

4.对作用域链的理解

5.介绍一下你对浏览器内核的理解?常见浏览器的内核是什么?

6.js中var和let和const的区别


1.js有哪些数据类型?

JavaScript数据类型:

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

注:JavaScript共9种数据类型;Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

JavaScript 拥有动态类型:

JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型。

参考链接:https://www.html.cn/qa/javascript/11572.html

2.说一下对闭包的理解,有什么运用场景?

闭包是指有权访问另外一个函数作用域中变量的函数,创建闭包的常见的方式就是在一个函数内部创建另外一个函数访问这个函数的局部变量,利用闭包可以突破作用域链。

闭包的特性:

  1. 函数内再嵌套函数
  2. 内部函数可以引用外层的参数和变量
  3. 参数和变量不会被垃圾回收机制回收

闭包的应用场景:

当我们使用计时器的时候setTimeout(function(){},1000)的时候,第一个参数是一个函数,或者是一段执行的js代码,第二参数是第一个参数执行的时间间隔。

当我们需要往第一个参数(这里针对第一个参数是一个函数的情况)是一个函数,需要往这个函数传递参数的时候,这时就可以使用闭包。

3.对js中原型及原型链的理解

当我们创建一个函数的时候,每个函数会自动生成一个原型(prototype)属性;在函数中就只有这一个原型属性,而这个属性是一个指针,指向一个对象,称为原型对象,原型对象中含有一个constructor属性,通过这个属性又可指回函数。当我们向函数中添加属性时,实际上添加到了原型对象之中,当我们用new操作符创建新实例时,这个新实例是可以共享原型对象中的属性的。当我们向新实例中添加属性时,属性被保存到了新实例中,当向新实例中添加和原型中一模一样的属性时,这个属性会覆写原型中的属性。

每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链的概念。

关系:instance.constructor.prototype = instance.__proto__

特点:

  • JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变。

  • 当我们需要一个属性的时候,Javascript引擎会先看当前对象中是否有这个属性, 如果没有的,就会查找他的Prototype对象是否有这个属性,如此递推下去,一直检索到 Object 内建对象

4.对作用域链的理解

  • 作用域链的作用是保证执行环境里有权访问的变量和函数是有序的,作用域链的变量只能向上访问,变量访问到window对象即被终止,作用域链向下访问变量是不被允许的
  • 简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期

5.介绍一下你对浏览器内核的理解?常见浏览器的内核是什么?

  • 主要分成两部分:渲染引擎(layout engineerRendering Engine)和JS引擎
  • 渲染引擎:负责取得网页的内容(HTMLXML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核
  • JS引擎则:解析和执行javascript来实现网页的动态效果
  • 最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎

不同浏览器的内核也不尽相同,所以各个浏览器对网页的解析存在一定的差异。
浏览器内核主要分为两种,一是渲染引擎,另一个是js 引擎,内核更加倾向于说渲染引擎。
常见的浏览器内核:

不同浏览器的默认样式存在差异,可以使用 Normalize.css 抹平这些差异。

6.js中var和let和const的区别

  • var声明的变量会挂载在window上,而let和const声明的变量不会

  • var声明变量存在变量提升,let和const不存在变量提升;let和const声明的变量不可在声明之前调用,必须先定义再使用,否则会报错,而var则是undefined,因为它的声明提升到当前作用域的头部

  • let和const声明形成块级作用域,而var没有块级作用域,所以var声明在for循环中的变量,跳出for循环同样可以使用

  • 同一作用域下let和const不能声明同名变量,而var可以

  • const一旦声明必须赋值,不能使用null占位;声明后变量值不能再修改;但如果声明的是复合类型数据,可以修改其属性,但必须是通过下标或者属性的方式修改,而不能重新赋值变量

  • let定义的变量可以修改,如果不初始化会输出undefined,不会报错

  • var定义的变量可以修改,如果不初始化会输出undefined,不会报错

var a = 1;
// var a;//不会报错
console.log('函数外var定义a:' + a);//可以输出a=1
function change(){
a = 4;
console.log('函数内var定义a:' + a);//可以输出a=4
}
change();
console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4let a;
console.log(a);//undefinedconst a;//报错for(var i=0;i<=1000;i++){
var sum=0;
sum+=i;
}
alert(sum);//正常输出let a = 1;
a = 2;
console.log(a);//2const a = [1,2];
// a = 1;//报错
a[2] = 3;//可以修改a
console.log(a);//[1, 2, 3]
let c = 3;
console.log('函数外let定义c:' + c);//输出c=3
function change(){
let c = 6;
console.log('函数内let定义c:' + c);//输出c=6
}
change();
console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=3
const b = 2;//正确
// const b;//错误,必须初始化
console.log('函数外const定义b:' + b);//有输出值
// b = 5;
// console.log('函数外修改const定义b:' + b);//无法输出

以上皆是本人目前在广州找实习期间亲身经历过的面试题中的JavaScript问题,部分答案源于网上,如有错漏或有更好的答案也欢迎大家指出,仅作为笔记收录使用,也衷心希望各位能少走弯路,能够找到自己心仪的工作!

前端开发交流QQ群:761614159

求职前端开发的小伙伴可以进群交流一下!

前端开发实习面试题(JavaScript篇)相关推荐

  1. 前端开发实习面试题(Web篇)

    1.http有哪些请求方式? GET方法 发送一个请求来取得服务器上的某一资源 POST方法 向URL指定的资源提交数据或附加新的数据 PUT方法 跟POST方法很像,也是想服务器提交数据.但是,它们 ...

  2. 前端开发实习面试题(CSS篇)

    目录 1.CSS3有哪些新特性? 2.介绍一下盒子模型(由什么组成)? 3.定位有哪些值,分别是相对谁定位? 4.如果我想给table表格的第一列内容添加样式,如何做? 5.浮动的作用,如何清除浮动? ...

  3. 前端开发实习笔试题(简答题)

    目录 1.说说你知道Javascript的内存回收机制 2.简单介绍一下Promise,它解决了什么问题? 3.position : absolute和float属性的异同 4.Cookie和Sess ...

  4. 写一篇300字前端开发实习日报,以学习了vue为开头

    今天是我的第10天前端开发实习.这个星期我主要学习了Vue.我对Vue框架非常感兴趣,因为它可以帮助我们快速和有效地构建用户界面. 我从Vue官方文档和一些教程开始学习,了解了Vue的基本概念和用法. ...

  5. Web前端开发——BAT面试题汇总及答案01

    目录: 目录: HTML&CSS篇: 1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? 2.每个 HTML 文件里开头都有个很重要的东西,Doctype,知道这是干什么的吗? 3 ...

  6. 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(4)

    推荐文章: VUE之VUEX常见面试题大全汇总--史上最全[vuex面试题] 前端面试题之HTML+CSS(持续更新)_勤动手多动脑少说多做厚积薄发-CSDN博客1.行内元素和块级元素?img算什么? ...

  7. 最新前端开发面试笔试题及答案---图片(面试题系列持续更新中)(8)

    推荐文章: VUE之VUEX常见面试题大全汇总--史上最全[vuex面试题] 前端面试题之HTML+CSS(持续更新)_勤动手多动脑少说多做厚积薄发-CSDN博客1.行内元素和块级元素?img算什么? ...

  8. 前端开发工程师面试题2

    前端开发工程师面试题2 1.Doctype作用? 严格模式与混杂模式如何区分?它们有何意义? (1). 声明位于文档中的最前面,处于 标签之前.告知浏览器的解析器,用什么文档类型 规范来解析这个文档. ...

  9. 前端面试题-JavaScript篇

    web前端面试题 JavaScript篇 1.JavaScript的数据类型都有哪些(8条)? ES5中有6种:Number.String.Boolean.Undefined.Null.Object ...

最新文章

  1. 查看apache、linux、kernel、nginx等版本
  2. android adb 命令源码解析
  3. CompletableFuture源码详解之java.util.concurrent.CompletableFuture#runAsync(java.lang.Runnable)
  4. 单列索引和联合索引,有什么区别?
  5. 普罗米修斯java_springboot集成普罗米修斯(Prometheus)的方法
  6. 基于django rest framework的mock server实践
  7. java数组深拷贝和浅拷贝_java List复制:浅拷贝与深拷贝
  8. Tegra X1性能解析
  9. 有了设计类导航网站,从此就不再需要瞎找了
  10. python实用库_python常用库
  11. 手机APP和微信小程序能否取代域名?
  12. [Qualcomm][Debug] 不用软件抓QXDM LOG
  13. 【生信技能树】【miRNA】学习笔记(一)
  14. c语言中的局部变量和全局变量
  15. 国外android大神博客,Android手机浏览器(国外篇)横向对比评测
  16. CF506C Mr. Kitayuta vs. Bamboos
  17. 射频测试系统|射频信号测试软件NSAT-1000
  18. 使用Scrapy爬取掘金热门文章的分析和实现
  19. 联通猫无线灯闪 不能连接服务器,光猫一直闪红灯不能上网是怎么回事 光猫闪红灯的解决方法...
  20. 本题要求递归实现一个计算X的N次方 (n≥1)的函数。

热门文章

  1. android和ios系统的内存,为什么说IOS系统的2G运存相当于安卓手机的8G运存
  2. 计算机网络——计算机网络中的安全
  3. 等保三级核心-主机安全
  4. 【手动安装Python包】
  5. java画太极加图片_Android 画一个太极图实例代码
  6. 阿里云服务器与堡垒机搭建Oracle数据库(配置多个实例)以及数据库导入、导出
  7. 华为云跨服务器传输文件,云服务器传输文件
  8. Java String intern()方法
  9. Bugzilla详解
  10. 虎年降至.一款2022虎年为主的一款头像制作小程序源码。