js常见面试题整理

1:JavaScript 有哪些数据类型

答: JavaScript 的数据类型分为原始类型和对象类型。

原始类型有 7 种,分别是:

对象类型(也称引用类型)是一个泛称,包括数组、对象、函数等一切对象。

 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 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。

代码演示如下:

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'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值