<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Array.isArray()</title>
</head>
<body>
<script>
/*
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
Array.isArray() 静态方法用于确定传递的值是否是一个 Array。
语法:Array.isArray(value)
参数
value
需要检测的值。
返回值
如果 value 是 Array,则为 true;否则为 false。如果 value 是 TypedArray 实例,则总是返回 false。
描述
Array.isArray() 检查传递的值是否为 Array。
它不检查值的原型链,也不依赖于它所附加的 Array 构造函数。
对于使用数组字面量语法或 Array 构造函数创建的任何值,它都会返回 true。
这使得它可以安全地使用跨领域(cross-realm)对象,其中 Array 构造函数的标识是不同的,
因此会导致 instanceof Array 失败。
*/
// const arr = [];
// console.log(arr);
//1.下面的函数调用都返回 true
// console.log(Array.isArray([]));
// console.log(Array.isArray([1]));
// console.log(Array.isArray(new Array()));
// console.log(Array.isArray(new Array("a", "b", "c", "d")));
// console.log(Array.isArray(new Array(3)));
// // 鲜为人知的事实:其实 Array.prototype 也是一个数组:
// console.log(Array.isArray(Array.prototype));
//2.下面的函数调用都返回 false
console.log(Array.isArray());
console.log(Array.isArray({}));
console.log(Array.isArray(null));
console.log(Array.isArray(undefined));
console.log(Array.isArray(17));
console.log(Array.isArray("Array"));
console.log(Array.isArray("[]")); //false
console.log(Array.isArray(true));
console.log(Array.isArray(false));
console.log(Array.isArray(new Uint8Array(32)));
console.log(Array.isArray(new Int16Array([15, 33]))); //false
// 这不是一个数组,因为它不是使用数组字面量语法或 Array 构造函数创建的
console.log(Array.isArray({ __proto__: Array.prototype }));
</script>
</body>
</html>