收集整理了几道js数据基础面试题,在此分享一下。
(1)typeof能得到几种数据类型?
能得到7种类型,基本类型中除了null以外都能识别,引用类型中除了函数以外都不能识别。
基本类型
typeof 123 // number
typeof '123' // string
typeof true // boolean
typeof undefined // undefined
typeof null // object
引用类型
typeof console.log // function
typeof {} // object
typeof [] // object
ES6
typeof Symbol() // symbol
typeof new Set() // object
typeof new Map() // object
复制代码
(2)哪些情况会出现强制类型转换?
- ==运算
25 == '25' // true
0 == '' // true
null == undefined // true
复制代码
- +号字符串拼接
25 + 25 // 50
25 + '25' // 2525
10 + 20 + '30' // 3030
复制代码
- 逻辑运算
10 && 20 // 20
0 && 20 // 0 (0转成false)
!! 10 // true (转成布尔类型)
'' || 20 // 20
window.abc // undefined
!window.abc // true
复制代码
- if语句
var a = 10;
if (a) {
// 执行
}
var a = 0;
if (a) {
// 不执行
}
var a = '';
if (a) {
// 不执行
}
null、undefined、0、''、NaN 会转换成false
复制代码
(3)什么时候使用===,什么时候使用== ?
if (obj.a == null) {
// 判断属性是否存在时用==
}
function a(x, y) {
if (x == null) {
// 判断参数是否存在时用==
}
}
除此之外都应该用===
复制代码
(4)js中有哪些内置函数?
- Object
- Array
- Function
- Date
- RegExp
- Error
- String
- Number
- Boolean
ES6 - Symbol
- Set
- Map
- Promise
Math、JSON不是函数,是对象。
(5) js中数据按照存储方式可以分为哪几种类型,各有什么特点?
- 基本类型(null、undefined、string、number、boolean)
特点:每个变量是独立存在的。
var a = 10;
var b = a;
a = 20;
console.log(b); // 10
复制代码
- 引用类型 (object、array、function)
特点: 多个变量共同引用内存中同一段地址,相互影响。
出现的原因: 引用类型的数据一般非常复杂,如果多个变量存储同一个对象,会非常浪费内存空间。
var a = {x: 10};
var b = a;
a.x = 20;
console.log(b.x); // 20
复制代码
(6) 如何理解JSON?
- JSON是一种数据格式,也是js对象。
- JSON可以表示3种类型的值:基本类型(除undefined)、对象、数组,不支持变量、函数、对象实例。
- 序列化
JSON.stringify({a: 10,b: 20})
- 解析
JSON.parse('{"a": 10, "b": "abc"}')