JavaScript面试题

Document

Javascript是什么?

参考答案

JavaScript是一种属于网络的脚本语言,被广泛应用于web应用开发

Javascript三大组成部分

参考答案

  • ECMAScripts: Javascript的核心,它规定了js的语法标准。 定义了js是什么样子的 描述了语言的基本语法(var、for、if、array等)和数据类型(Number、String、Boolean、Undefined、Object、Symbol)
  • DOM:文档对象模型,使js用了操纵html标签的能力,(例如获取、新增、删除DOM节点)(是 HTML 和 XML 的应用程序接口(API))
  • BOM:浏览器对象模型,使js拥有了操作浏览器的能力, (例如弹出新的浏览器窗口、移动、改变和管理浏览器窗口、获取网络浏览器信息(navigator object),页面信息(location object),用户屏幕分辨率的信息(screen object),对cookies的支持等等。)

数据类型

参考答案

  • 基本数据类型:Number、String、Null、Undefined、Boolean
  • 复杂数据类型:Object

Promise是什么?

参考答案

Promise对象是JavaScript的异步操作解决方案

全局变量

参考答案

在全局定义的变量为全局变量,(不在任何函数内定义的变量)在这个作用环境中的所有函数对象都是可以调用到全局变量

局部变量

参考答案

局部变量即定义在函数内部的变量。他的作用环境局限在变量所在的局部环境中。

变量提升

参考答案

在javascript中,函数和变量声明都会被提升到函数的顶部。通俗的来说就是我们可以先使用变量,然后再声明函数。

作用域

参考答案

在作用域的范围中,我们可以使用这个作用域的变量,对这个变量进行各种操作。

作用域链

参考答案

(每当执行一个函数就进入一个新的作用域,使用一个变量的时候,首先从当前作用域内部找变量,找到就输入使用,找不到就往当前函数上层的作用域赵)

箭头函数和普通函数的区别?

参考答案

  • 箭头函数作为匿名函数
  • 箭头函数不绑定this,会捕获上下文this,作为自己的this值,任何方法都改变不了this指向,(call(),bind(),apply())
  • 箭头函数不绑定arguments,用reset参数替代

例举强制类型转换和隐式类型转换

参考答案

  • 强制:String()、Boolean()、Number()、parseInt()、parseFloat()
  • 隐式:+、-、==、===

typeof返回哪些数据类型

参考答案

function、string、boolean、number、undefined、object

call和apply的区别

参考答案

  • Object.call(this, arg1, arg2) 参数需要分开传
  • Object.apply(this, [arg1, arg2])   所有参数放在一个数组里面

列举操作数组的几种方法?

参考答案

 

列举操作字符拆的几种方法?

参考答案

  • string.charAt(index)通过下标找对应的字符
  • string.indexOf(value, startIndex)通过字符去找对应的下标值(从左往右)
  • string.lastIndexOf(value, startIndex)通过字符去找对应的下标值(从右往左)

split()、 join()的区别?

参考答案

前者将字符串分割成数组,后者将数据变为字符串

闭包?

参考答案

定义:闭包就是能够读取其他函数内部变量的函数

使得函数不被GC回收

影响:如果过多使用闭包,容易导致内存泄漏

this是什么?

参考答案

this就是一个指针,指向调用函数的对象?

get和post的区别

参考答案

  • post更安全(不会作为url的一部分,不会被缓存,保存在服务器日志,以及浏览器浏览记录中)
  • get会缓存静态资源,post不会(比如html页面、图片,谷歌火狐监测get请求的是静态资源,则会缓存,如果是数据,则不会缓存)
  • post发送的数据更大,(get有url长度限制,不仅仅是参数值数据长度)
  • post比get慢 (post在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据)

let、const、var的区别

参考答案

  • let和const声明的变量不会出现变量提升,var声明的变量会提升(let变量也会提升,只不过因为暂时死区的限制,不能在let声明变量之前使用)
  • let和const是块级作用域,var是函数级作用域
  • let和const不允许重复生命(会抛出错误)
  • let和const

什么是变量提升?什么是暂时性死区

参考答案

  • 变量提升:变量声明之前就可以使用,值为undefined
  • 暂时性死区:只要已进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到生命变量的那一行代码出现,才可以获取和使用该变量

    (在代码块内,使用let、const声明变量之前,该变量都是不可用的,会抛出错误,这在语法上,称为“暂时性死区”)

 

参考答案

 

JavaScript面试题

上一篇:Android开机Logo动画制作


下一篇:数组方法