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声明变量之前,该变量都是不可用的,会抛出错误,这在语法上,称为“暂时性死区”)
参考答案