Значения в JavaScript Тип значения const getType = v => (v === undefined ? 'undefined' : v === null ? 'null' : v.constructor.name);JavaScriptCopy getType(new Set([1, 2, 3])); // 'Set'JavaScriptCopy Значение не определено const isUndefined = val => val === undefined;JavaScriptCopy isUndefined(undefined); // trueJavaScriptCopy Значение равно нулю const isNil = val => val === undefined || val === null;JavaScriptCopy isNil(null); // true isNil(undefined); // true isNil(''); // falseJavaScriptCopy const isNull = val => val === null;JavaScriptCopy isNull(null); // trueJavaScriptCopy Значение является символом const isSymbol = val => typeof val === 'symbol';JavaScriptCopy isSymbol(Symbol('x')); // trueJavaScriptCopy Случайное логическое значение const randomBoolean = () => Math.random() >= 0.5;JavaScriptCopy randomBoolean(); // trueJavaScriptCopy const isBoolean = val => typeof val === 'boolean';JavaScriptCopy isBoolean(null); // false isBoolean(false); // trueJavaScriptCopy Значение представляет собой простой объект const isPlainObject = val => !!val && typeof val === 'object' && val.constructor === Object;JavaScriptCopy isPlainObject({ a: 1 }); // true isPlainObject(new Map()); // falseJavaScriptCopy Значение похоже на объект const isObjectLike = val => val !== null && typeof val === 'object';JavaScriptCopy isObjectLike({}); // true isObjectLike([1, 2, 3]); // true isObjectLike(x => x); // false isObjectLike(null); // falseJavaScriptCopy Значение является объектом const isObject = obj => obj === Object(obj);JavaScriptCopy isObject([1, 2, 3, 4]); // true isObject([]); // true isObject(['Hello!']); // true isObject({ a: 1 }); // true isObject({}); // true isObject(true); // falseJavaScriptCopy Маскировать значение const mask = (cc, num = 4, mask = '*') => `${cc}`.slice(-num).padStart(`${cc}`.length, mask);JavaScriptCopy mask(1234567890); // '******7890' mask(1234567890, 3); // '*******890' mask(1234567890, -4, '$'); // '$$$$567890'JavaScriptCopy Проверьте, имеет ли значение тип const is = (type, val) => ![, null].includes(val) && val.constructor === type;JavaScriptCopy is(Array, [1]); // true is(ArrayBuffer, new ArrayBuffer()); // true is(Map, new Map()); // true is(RegExp, /./g); // true is(Set, new Set()); // true is(WeakMap, new WeakMap()); // true is(WeakSet, new WeakSet()); // true is(String, ''); // true is(String, new String('')); // true is(Number, 1); // true is(Number, new Number(1)); // true is(Boolean, true); // true is(Boolean, new Boolean(true)); // trueJavaScriptCopy Значение — поток const isStream = val => val !== null && typeof val === 'object' && typeof val.pipe === 'function';JavaScriptCopy const fs = require('fs'); isStream(fs.createReadStream('test.txt')); // trueJavaScriptCopy instanceof для примитивных значений JavaScript class PrimitiveNumber { static [Symbol.hasInstance] = x => typeof x === 'number'; } 123 instanceof PrimitiveNumber; // true class PrimitiveString { static [Symbol.hasInstance] = x => typeof x === 'string'; } 'abc' instanceof PrimitiveString; // true class PrimitiveBoolean { static [Symbol.hasInstance] = x => typeof x === 'boolean'; } false instanceof PrimitiveBoolean; // true class PrimitiveSymbol { static [Symbol.hasInstance] = x => typeof x === 'symbol'; } Symbol.iterator instanceof PrimitiveSymbol; // true class PrimitiveNull { static [Symbol.hasInstance] = x => x === null; } null instanceof PrimitiveNull; // true class PrimitiveUndefined { static [Symbol.hasInstance] = x => x === undefined; } undefined instanceof PrimitiveUndefined; // trueJavaScriptCopy JavaScriptВычисления JavaScript