0%

javascript-interview-questions-03

Primitive wrapper objects

1
2
3
4
5
6
7
8
9
10
11
const s1 = new String('abc');
const s2 = new String('abc');

const s3 = String('abc');
const s4 = String('abc');

console.log(s1 == s2);
console.log(s3 == s4);

console.log(s1 == s3);
console.log(s1 === s3);

Answer:

1
2
3
4
false
true
true
false
  • s1和s2都是object类型,所以它们的引用地址不同,所以s1 == s2返回false
  • s3和s4都是string类型,所以它们的值相同,所以s3 == s4返回true
  • s1是object类型,s3是string类型,比较时先将s1转换为primitive类型,也就是字符串类型,所以s1 == s3返回true
  • s1是object类型,s3是string类型,所以s1 === s3返回false
    关于JavaScript中==的详细规则,请看这里

输出结果是什么?

1
2
const data = new Uint8Array();
console.log(Array.isArray(data));

Answer: false
Uint8ArrayArrayBuffer 对象的一个视图,它表示一个8位无符号整数的数组。Uint8Array 实例不是一个数组,所以 Array.isArray(data) 返回 false