1:JavaScript 有哪些数据类型
答: JavaScript 的数据类型分为原始类型和对象类型。
原始类型有 7 种,分别是:
- Boolean
- Number
- BigInt
- String
- Null
- Undefined
- Symbol
对象类型(也称引用类型)是一个泛称,包括数组、对象、函数等一切对象。
2:typeof null 的结果是什么
typeof null; // 'object'
判断一个类型为 null
可以这么写,直接判断变量全等于 null
:
let a = null;
if (a === null) {
// do something
}
3:原始类型和引用类型的区别是什么
4:typeof 和 instanceof 的区别是什么
答:
-
typeof
运算符用来判断数据的类型。 -
instanceof
运算符用于检测构造函数的prototype
属性是否出现在某个实例对象的原型链上,也可以用来判断数据的类型。-
typeof
返回一个变量的类型字符串,instanceof
返回的是一个布尔值。 -
typeof
可以判断除了null
以外的基础数据类型,但是判断引用类型时,除了function
类型,其他的无法准确判断。 -
instanceof
可以准确地判断各种引用类型,但是不能正确判断原始数据类型。
-
5:Symbol 解决了什么问题
答:Symbol
是 ES6 时新增的特性,Symbol
是一个基本的数据类型,表示独一无二的值,主要用来防止对象属性名冲突问题。
ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的属性,新属性的名字就有可能与现有属性的名字产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入 Symbol
的原因之一。
Symbol
值通过 Symbol
函数生成。这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol
类型。凡是属性名属于 Symbol
类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。文章来源:https://www.toymoban.com/news/detail-468928.html
代码演示如下:文章来源地址https://www.toymoban.com/news/detail-468928.html
const obj = {
name: "lin",
age: 18,
};
obj.name = "xxx"; // 给 obj.name 赋值,把以前的 name 覆盖了
console.log(obj); // { name: 'xxx', age: 18 }
const obj = {
name: "lin",
age: 18,
};
const name = Symbol("name");
obj[name] = "xxx"; // 使用 Symbol,不会覆盖
console.log(obj); // { name: 'lin', age: 18, Symbol(name): 'xxx' }
console.log(obj.name); // 'lin'
console.log(obj[name]); // 'xxx'
到了这里,关于js常见面试题整理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!