1、数据类型
- 基本数据类型:null、undefinde、boolean、string、number、symbol(ES6新增)
- 引用数据类型:Function、Array、Object、Map和Set(ES6新增)
2、let、var和const的区别
- var定义的变量,是全局作用域或函数作用域,存在变量提升
- let定义的变量,只能在块作用域里访问,不存在变量提升
- const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改,不存在变量提升
注意:变量提升指js引擎在正式执行代码前会进行一次预编译,会把var所定义的变量以及函数当前作用域的顶部声明
3、GET和POST的区别
- get请求是获取数据的,而post请求是提交数据的
- get请求对数据长度的限制;当发送数据时,GET 方法向 URL 添加数据get请求的传送数据会拼接在url后面
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息
- GET参数通过URL传递,POST放在Request body中
4、跨域
- 域名、协议、端口号三者有一个不同的话就属于跨域行为
5、== 和 === 的区别
- === 比较类型和值,==只比较值。
- js在比较的时候如果是 == 会先做类型转换,再判断值是否相等
6、闭包的作用
- 闭包是有权限访问其他函数作用域的局部变量的一个函数
- 最大的用处两个:一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中
- 闭包随处可见,一个 Ajax 请求的成功回调,一个事件绑定的回调方法,一个 setTimeout 的延时回调,或者一个函数内部返回另一个匿名函数,这些都是闭包
- 简而言之,无论使用何种方式对函数类型的值进行传递,当函数在别处被调用时,都有闭包的身影
7、JavaScript的严格模式是什么
- 严格模式是为JavaScript定义了一种不同的解析与执行模型,它会以更严格的条件去检查你的代码错误,它可以全局使用,也可以局部使用(应用到函数内部)
主要用于以下几个目的
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。