- JavaScript Унарные операторы
- Синтаксис:
- Возвращает:
- Описание
- Примеры:
- Оператор удаления
- Синтаксис:
- Возвращает:
- Описание
- Примеры:
- Оператор типа
- Синтаксис:
- Возвращает:
- Примеры:
- Оператор пустоты
- Синтаксис:
- Возвращает:
- Описание
- Примеры:
- Унарный оператор отрицания (-)
- Синтаксис:
- Возвращает:
- Описание
- Примеры:
- Побитовый оператор NOT (~)
- Синтаксис:
- Возвращает:
- Описание
- Примеры:
- Логический оператор NOT (!)
- Синтаксис:
- Возвращает:
- Описание
- Примеры:
- обзор
JavaScript
Унарные операторы
Унарный плюс ( + ) предшествует его операнду и оценивает его операнд. Он пытается преобразовать операнд в число, если оно еще не было.
Синтаксис:
Возвращает:
Описание
Унарный плюс ( + ) оператор является самым быстрым (и предпочтительным) способом преобразования чего-либо в число.
- строковые представления целых чисел (десятичные или шестнадцатеричные) и поплавки.
- booleans: true , false .
- null
Значения, которые не могут быть преобразованы, будут оцениваться до NaN .
Примеры:
+42 // 42 +"42" // 42 +true // 1 +false // 0 +null // 0 +undefined // NaN +NaN // NaN +"foo" // NaN +<> // NaN +function()<> // NaN
Обратите внимание, что попытка преобразования массива может привести к неожиданным значениям возврата.
В фоновом режиме массивы сначала преобразуются в их строковые представления:
[].toString() === ''; [1].toString() === '1'; [1, 2].toString() === '1,2';
Затем оператор пытается преобразовать эти строки в числа:
+[] // 0 ( === +'' ) +[1] // 1 ( === +'1' ) +[1, 2] // NaN ( === +'1,2' )
Оператор удаления
Оператор delete удаляет свойство из объекта.
Синтаксис:
delete object.property delete object['property']
Возвращает:
Если удаление выполнено успешно или свойство не существует:
Если свойство, подлежащее удалению, является собственным неконфигурируемым свойством (его нельзя удалить):
Описание
Оператор delete напрямую не освобождает память. Он может косвенно освобождать память, если операция означает, что все ссылки на свойство исчезли.
delete работы над свойствами объекта. Если свойство с тем же именем существует в цепочке прототипов объекта, свойство будет унаследовано от прототипа.
delete не работает с именами переменных или функций.
Примеры:
// Deleting a property foo = 1; // a global variable is a property of `window`: `window.foo` delete foo; // true console.log(foo); // Uncaught ReferenceError: foo is not defined // Deleting a variable var foo = 1; delete foo; // false console.log(foo); // 1 (Not deleted) // Deleting a function function foo()< >; delete foo; // false console.log(foo); // function foo() < >(Not deleted) // Deleting a property var foo = < bar: "42" >; delete foo.bar; // true console.log(foo); // Object < >(Deleted bar) // Deleting a property that does not exist var foo = < >; delete foo.bar; // true console.log(foo); // Object < >(No errors, nothing deleted) // Deleting a non-configurable property of a predefined object delete Math.PI; // false () console.log(Math.PI); // 3.141592653589793 (Not deleted)
Оператор типа
Оператор typeof возвращает тип данных неопубликованного операнда в виде строки.
Синтаксис:
Возвращает:
Это возможные возвращаемые значения из typeof :
Тип | Возвращаемое значение |
---|---|
Undefined | «undefined» |
Null | «object» |
Boolean | «boolean» |
Number | «number» |
String | «string» |
Symbol (ES6) | «symbol» |
Function объект | «function» |
document.all | «undefined» |
Хост-объект (предоставляемый средой JS) | Зависит от реализации |
Любой другой объект | «object» |
Необычное поведение document.all с оператором typeof связано с его прежним использованием для обнаружения старых браузеров. Дополнительные сведения см. В разделе Почему document.all определен, но typeof document.all возвращает «undefined»?
Примеры:
// returns 'number' typeof 3.14; typeof Infinity; typeof NaN; // "Not-a-Number" is a "number" // returns 'string' typeof ""; typeof "bla"; typeof (typeof 1); // typeof always returns a string // returns 'boolean' typeof true; typeof false; // returns 'undefined' typeof undefined; typeof declaredButUndefinedVariable; typeof undeclaredVariable; typeof void 0; typeof document.all // see above // returns 'function' typeof function()<>; typeof class C <>; typeof Math.sin; // returns 'object' typeof < /**/ >; typeof null; typeof /regex/; // This is also considered an object typeof [1, 2, 4]; // use Array.isArray or Object.prototype.toString.call. typeof new Date(); typeof new RegExp(); typeof new Boolean(true); // Don't use! typeof new Number(1); // Don't use! typeof new String("abc"); // Don't use! // returns 'symbol' typeof Symbol(); typeof Symbol.iterator;
Оператор пустоты
Оператор void вычисляет данное выражение и затем возвращает undefined .
Синтаксис:
Возвращает:
Описание
Оператор void часто используется для получения undefined примитивного значения посредством записи void 0 или void(0) . Обратите внимание, что void является оператором, а не функцией, поэтому () не требуется.
Обычно результат выражения void и undefined может использоваться взаимозаменяемо.
Однако в более старых версиях ECMAScript window.undefined может быть назначено любое значение, и по-прежнему можно использовать undefined как имя для переменных параметров функций внутри функций, что нарушает другой код, который полагается на значение undefined .
void всегда будет давать истинное undefined значение.
void 0 также обычно используется в кодировании кода как более короткий способ написания undefined . Кроме того, это, вероятно, более безопасно, так как некоторые другие коды могут быть window.undefined с помощью window.undefined .
Примеры:
function foo() < return void 0; >console.log(foo()); // undefined
Изменение значения undefined внутри определенной области:
Унарный оператор отрицания (-)
Унарное отрицание ( — ) предшествует его операнду и отрицает его, пытаясь преобразовать его в число.
Синтаксис:
Возвращает:
Описание
Унарное отрицание ( — ) может преобразовывать те же типы / значения, что и оператор унарного плюса ( + ).
Значения, которые не могут быть преобразованы, будут оцениваться до NaN (нет -NaN ).
Примеры:
-42 // -42 -"42" // -42 -true // -1 -false // -0 -null // -0 -undefined // NaN -NaN // NaN -"foo" // NaN -<> // NaN -function()<> // NaN
Обратите внимание, что попытка преобразования массива может привести к неожиданным значениям возврата.
В фоновом режиме массивы сначала преобразуются в их строковые представления:
[].toString() === ''; [1].toString() === '1'; [1, 2].toString() === '1,2';
Затем оператор пытается преобразовать эти строки в числа:
-[] // -0 ( === -'' ) -[1] // -1 ( === -'1' ) -[1, 2] // NaN ( === -'1,2' )
Побитовый оператор NOT (~)
Побитовое NOT ( ~ ) выполняет операцию NOT для каждого бита в значении.
Синтаксис:
Возвращает:
Описание
Таблица истинности операции NOT:
1337 (base 10) = 0000010100111001 (base 2) ~1337 (base 10) = 1111101011000110 (base 2) = -1338 (base 10)
Побитовое число не приводит к: -(x + 1) .
Примеры:
значение (основание 10) | значение (основание 2) | return (основание 2) | return (основание 10) |
---|---|---|---|
2 | 00000010 | 11111100 | -3 |
1 | 00000001 | 11111110 | -2 |
0 | 00000000 | 11111111 | -1 |
-1 | 11111111 | 00000000 | 0 |
-2 | 11111110 | 00000001 | 1 |
-3 | 11111100 | 00000010 | 2 |
Логический оператор NOT (!)
Логический NOT ( ! ) Оператор выполняет логическое отрицание выражения.
Синтаксис:
Возвращает:
Описание
Логический NOT ( ! ) Оператор выполняет логическое отрицание выражения.
Булевы значения просто инвертируются !true === false и !false === true .
Небулевые значения сначала преобразуются в булевские значения, а затем отрицаются.
Это означает, что двойное логическое NOT ( !! ) может использоваться для приведения любого значения в boolean:
!!"FooBar" === true !!1 === true !!0 === false
!'true' === !new Boolean('true'); !'false' === !new Boolean('false'); !'FooBar' === !new Boolean('FooBar'); ![] === !new Boolean([]); !<> === !new Boolean(<>);
!0 === !new Boolean(0); !'' === !new Boolean(''); !NaN === !new Boolean(NaN); !null === !new Boolean(null); !undefined === !new Boolean(undefined);
Примеры:
!true // false !-1 // false !"-1" // false !42 // false !"42" // false !"foo" // false !"true" // false !"false" // false !<> // false ![] // false !function()<> // false !false // true !null // true !undefined // true !NaN // true !0 // true !"" // true
обзор
Унарные операторы — это операторы с одним операндом. Унарные операторы более эффективны, чем стандартные вызовы функций JavaScript. Кроме того, унарные операторы не могут быть переопределены, и поэтому их функциональность гарантирована.
Доступны следующие унарные операторы:
оператор | операция | пример |
---|---|---|
delete | Оператор delete удаляет свойство из объекта. | пример |
void | Оператор void сбрасывает возвращаемое значение выражения. | пример |
typeof | Оператор typeof определяет тип данного объекта. | пример |
+ | Оператор unary plus преобразует свой операнд в тип Number. | пример |
— | Унарный оператор отрицания преобразует свой операнд в число, а затем отрицает его. | пример |
~ | Побитовый оператор NOT. | пример |
! | Логический оператор NOT. | пример |
- Начало работы с JavaScript
- .postMessage () и MessageEvent
- AJAX
- API веб-криптографии
- API вибрации
- API выбора
- API состояния батареи
- API уведомлений
- Callbacks
- execCommand и contenteditable
- IndexedDB
- JSON
- Linters — Обеспечение качества кода
- Loops
- requestAnimationFrame
- Timestamps
- Transpiling
- WeakMap
- WeakSet
- WebSockets
- Автоматическая точка с запятой — ASI
- Анти-паттерны
- Арифметика (математика)
- Асинхронные итераторы
- Асинхронные функции (async / await)
- Атрибуты данных
- Веб-хранилище
- Встроенные константы
- Генераторы
- геолокации
- Глобальная обработка ошибок в браузерах
- Дата
- Двоичные данные
- Единичное тестирование Javascript
- Задавать
- Зарезервированные ключевые слова
- Интервалы и тайм-ауты
- Использование javascript для получения / установки пользовательских переменных CSS
- история
- Как заставить итератор использоваться внутри функции асинхронного обратного вызова
- карта
- Классы
- Комментарии
- Контекст (это)
- Литералы шаблонов
- локализация
- Манипуляция данными
- Массивы
- Методы модуляции
- Модалы — подсказки
- Модули
- Назначение деструктуризации
- наследование
- обещания
- Обнаружение браузера
- Обработка ошибок
- Объект Navigator
- Объекты
- Объем
- Объявления и задания
- Операции сравнения
- Оптимизация звонков
- отладка
- Оценка JavaScript
- Переменное принуждение / преобразование
- Переменные JavaScript
- Перечисления
- Печенье
- Побитовые операторы
- Побитовые операторы — примеры реального мира (фрагменты)
- Поведенческие шаблоны проектирования
- полномочие
- получать
- Пользовательские элементы
- Последовательности выхода
- Приставка
- Проблемы с безопасностью
- Пространства имен
- Прототипы, объекты
- Рабочие
- Регулярные выражения
- Свободный API
- Сети и Getters
- Символы
- События
- События, отправленные сервером
- Советы по повышению производительности
- Создание шаблонов проектирования
- Спецификация (модель объекта браузера)
- Сравнение даты
- Строгий режим
- Струны
- Та же политика происхождения и перекрестная связь
- Тильда ~
- Типы данных в Javascript
- Унарные операторы
- условия
- Файловый API, Blobs и FileReaders
- функции
- Функции конструктора
- Функции стрелки
- Функциональный JavaScript
- Цепочка метода
- Цикл событий
- экран
- Эффективность памяти