前端基础的40个问题及答案【第11-20问】
11、JS的数据类型?
六种数据类型
- 数字(number)
- 字符串(string)
- 布尔值(boolean)
- undefined
- null
- 对象(Object)
数组(Array)、函数(Function)、还有两个特殊的对象:正则(RegExp)和日期(Date)。
12、判断一个值是什么类型有哪些方法?
- 最常见的判断方法:
typeof
- 已知对象类型:
instanceof
- 对象原型链判断方法:
Object.prototype.toString.call()
通用但很繁琐- 根据对象的构造器
constructor
进行判断- jQuery方法:
jquery.type()
需要引入jquery文件
13、null和undefined的区别?
null
的字面意思是:空值
undefined
的字面意思就是:未定义的值
两者的区别就是:
undefined
表示一个变量自然的、最原始的状态值,而null
则表示一个变量被人为的设置为空对象,而不是原始状态。
所以,在实际使用过程中,为了保证变量所代表的语义,不要对一个变量显式的赋值undefined
,当需要释放一个对象时,直接赋值为null
即可。
14、怎么判断一个变量arr的话是否为数组(此题用typeof不行)?
- 已知对象类型:
instanceof
- 对象原型链判断方法:
Object.prototype.toString.call()
通用但很繁琐- 根据对象的构造器
constructor
进行判断- jQuery方法:
jquery.type()
需要引入jquery文件- 用Array对象的
isArray
方法判断:Array.isArray()
15、箭头函数有哪些特点?
- 箭头函数是匿名函数
- 箭头函数的this指向外层作用域的this的值
- 箭头函数不绑定argument是,而用剩余参数…rest解决
- 箭头函数不能用作构造函数
- 箭头函数没有原型属性
箭头函数不为参数 super、this 或 new.target 定义本地绑定。箭头函数中的 this、super、arguments 及 new.target 这些值由外围最近一层非箭头函数决定。
16、new操作符具体干了什么?
- 创建一个新的对象obj
- 将对象与构建函数通过原型链连接起来
- 将构建函数中的this绑定到新建的对象obj上
- 根据构建函数返回类型作判断,如果是原始值则被忽略,如果是返回对象,需要正常处理
17、documen.wri?
write() 方法可向文档写入 HTML 表达式或 JavaScript 代码。
⚠️注意
write()方法不会在每个语句后面新增一行
writeln()方法在每个语句后面新增一行
18、ajax过程?
1、创建 Ajax的核心对象 XMLHttpRequest对象
2、通过 XMLHttpRequest 对象的 open() 方法与服务端建立连接
3、构建请求所需的数据内容,并通过XMLHttpRequest 对象的 send() 方法发送给服务器端
4、通过 XMLHttpRequest 对象提供的 onreadystatechange 事件监听服务器端你的通信状态
5、接受并处理服务端向客户端响应的数据结果
6、将处理结果更新到 HTML页面中
19、请解释一下javascript的同源策略?
同源策略指的是:协议,域名,端口相同,同源策略是一种安全协议。
指一段脚本只能读取来自同一来源的窗口和文档的属性。
20、介绍一下闭包和闭包常用场景?
闭包是什么
闭包允许函数访问并操作函数外部的变量。红宝书上对于闭包的定义:闭包是指有权访问另外一个函数作用域中的变量的函数。 MDN 对闭包的定义为:闭包是指那些能够访问自由变量的函数。这里的自由变量是外部函数作用域中的变量。
概述:闭包是指有权访问另一个函数作用域中变量的函数
闭包的常用场景
一是函数作为返回值,二是函数作为参数来传递。