导航


HTML

CSS

JavaScript

浏览器 & 网络

版本管理

框架

构建工具

TypeScript

性能优化

软实力

算法

UI、组件库

Node

冷门技能

⭐️ 基本类型

复杂类型

⭐️ 区别

两种类型的区别是:存储位置不同;

Untitled

JS 类型检测

⭐️ typeof 检测某个值是什么类型

console.log(typeof [] === 'object'); // true
console.log(typeof null === 'object'); // true
console.log(typeof(undefined)); // undefined
console.log(typeof(NaN)); // number
console.log( typeof(1 - "1") ) // number
console.log( typeof("1" - "1") ) // number

console.log(a) // Uncaught ReferenceError: a is not defined.
console.log( typeof(a) ) // undefined
console.log( typeof(typeof(a)) ) // string;  hint: typeof() 返回的是字符串

⭐️ instanceof 检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上

function Car(make, model, year) {
  this.make = make;
  this.model = model;
}
var auto = new Car('Honda', 'Accord');

console.log(auto instanceof Car);
// expected output: true

console.log(auto instanceof Object);
// expected output: true

⭐️ undefined

console.log(window.undefined);

window.undefined = 1; // 不可修改
console.log(window.undefined);
delete window.undefined; // 不可删除
console.log(window.undefined);

for (var k in window) { // 不可枚举
	if (k === undefined) {
  	console.log(k);
  }
}

Object.defineProperty(window, 'undefined', {
	enumerable: true,
  writable: true,
  configurable: true
});

Untitled

function test() {
  // undefined 不是 JS 的保留字和关键字
	var undefined = 1;
  console.log(undefined);
  console.log(window.undefined === void(100));
  console.log(undefined === void(12));
}
test();

Untitled

拓展

let a = undefined;

let x = a ?? 123;
console.log(x); // 123
let a = null;

let x = a ?? 123;
console.log(x); // 123
// 非 undefined 或 null,则不处理
let a = 0 ?? 999;
console.log(a); // 0

JavaScript 最大安全数字与最小安全数字

console.log(Number.MAX_SAFE_INTEGER)
// 9007199254740991
console.log(Number.MIN_SAFE_INTEGER)
// -9007199254740991