Выражение - любой имеющий силу набор литералов, переменных, операторов, и выражений, которые вычисляю простое значение. Значение может быть число, строка, или логическое значение. Существует два типа выражений: которые присваивают значение переменной, и которые вычисляют выражение без присваивания его переменной. Например, выражение
x = 7
Является выражением, которое приписывает x значение 7. Это выражение вычисляет 7. Такие выражения используют операторы присвоения. С другой стороны, выражение
3 + 4
Просто вычисляет 7; оно не выполняет присвоения. Операторы используемые в таких выражениях, упоминаются просто как операторы.
JavaScript имеет следующие выражения:
Язык JavaScript включает в себя значение null для переменных, которым не присвоено никакое значение. Любая попытка использовать переменную, имеющую значение null, в вычисляемом выражении приводит к ошибке, за исключением случая присваивания значения null переменной, например timerID = null.
Условное выражение может иметь одну из двух значений, основанных на условии. Синтаксис
(Условие)? Val1: val2
Если условие истинно, то выражение имеет значение val1, иначе имеет значение val2.
Например,
Оператор присваивает значение левому операнду, основанному на значении правого операнда. Основной оператор присваивания равенство (=), который присваивает значение правого операнда левому операнду. То есть x = y приписывает значение y к x.
Другие операторы - стенография для стандартных арифметических действий выглядят следующим образом:
Имеются дополнительные операторы присваивания для побитовых операторов
JavaScript имеет арифметические, строковые и логические операторы. Имеет, и бинарные и унарные операторы. Бинарный оператор требует двух операндов, унарный перед оператором и одним после оператора:
Operand1 operator operand2
Например, 3 + 4 or x * y
Унарный оператор требует одного операнда, до или после оператора:
operator operand
Или
operand operator
Например x ++ или ++ x.
Арифметические операторы принимают численные значения (литералы или переменные) как их операнды и возвращают числовое значение.
Стандарт Арифметические операторы - сложение (+), вычитание (-), умножение (*), и деление (/). Эти операторы работают стандартным способом.
Оператор модуля используется следующим образом:
Var1 % var2
Оператор модуля возвращает первый операнд по модулю второго операнд, то есть var1 по модулю var2, где var1 и var2 - переменные. Функция по модулю - это остаточный член от деления var1 на var2. Например, 12 % 5 возвращается 2.
Оператор инкримент используется следующим образом:
var++
или ++var
Этот оператор увеличивает его операнд и возвращает значение. Если используемый постфикс, с оператором после операнда (например x ++), то возвращает значение перед увеличением. Если используемый префикс с оператором перед операндом (например, ++ x), то возвращает значение после увеличения.
Например, если x - 3, то утверждение
y = x ++
Увеличивает x до 4 и присваивает y равное 3.
Если x - 3, то утверждение
y = ++ x
Увеличивает x до 4 и присваивает y равное 4.
Оператор декремента используется следующим образом:
var--
или --var
Этот оператор уменьшает его операнд и возвращает значение. Если используемый постфикс (например x--) то возвращает значение перед уменьшением. Если используемый префикс (например, --x), то возвращает значение после уменьшения.
Например, если x - 3, то утверждение
y = x --
Уменьшает x до 2 и присваивает y равное 3.
Если x - 3, то утверждение
y = -- x
Уменьшает x до 2 и присваивает y равное 2.
Унарный оператор вычитания должен предшествовать его операнду. Например,
x = -x
Вычитает значение x; например, если бы x был равен 3, то стал бы равным -3.
Побитовые операторы воздействуют на операнды как набор битов (0 и 1). Например, десятичное число 9 имеет двоичное представление 1001. Побитовые операторы выполняют действия на таких двоичных представлениях, но они возвращают стандартное JavaScript численное значение.
Побитовые логические операторы работают следующим образом:
Побитовые операторы:
Например, бинарное представление 9 - 1001, и бинарное представление 15 - 1111. Так, когда побитовые операторы применяются к этим значениям, то результаты выглядят следующим образом:
Побитовые операторы сдвига:
Операторы сдвига присваивает два операнда: первый - количество на которое будет сдвинуто, и второй определяет число битовых положений, которыми первый операнд должен быть сдвинут. Направление действия сдвига управляется использующим оператором.
Операторы сдвига преобразуют операнды к 32-битное целое число, и возвращают результат того же самого типа что и левый оператор.
Сдвиг влево перемещает все биты влево на количество позиций, указанных в правой части выражения, заполняя освободившиеся позиции нулямию
Например, 9<<2 возвращает 36, потому что 1001 сдвигается на 2 бита влево и становится равным 100100, что равно в дисятеричной системе 36.
Cдвиг вправо заполняет освободившиеся слева позиции значением самого левого бита исходного значения.
Например, 9 >> 2 возвращает 2, потому что 1001 сдвигается на два бита вправо и становится 10, что равно в дисятеричной системе 2. Аналогично, -9 >> 2 возвращает -3, потому что знак сохраняется.
Сдвиг вправо с заполнением нулями работает аналогично сдвигу влево, только в противоположном направлении.
Например, 19>>>2 возвращает 4, потому что 10011 сдвигается на два бита вправо и становятся 100, что равно в дисятеричной системе 4. Для postive чисел, ноль - заполняет правый сдвиг, и распространяющийся знак сдвигается вправо выдает тот же самый результат.
Логические операторы принимают логические (Булевы) значения как операнды. Они возвращают логическое значение. Логические значения true(истина) и false(ложь).
Использование: expr1 && Expr2
Логический "и" возвращает оператор true, если оба логических выражения и expr1 и expr2 true. Иначе, возвращается false.
Использование: expr1 || expr2
Логический "или" возвращает оператор true, если хотя бы одно из логических выражений или expr1 или expr2 true. Если и expr1 и expr2 false, то это возвращается false.
Использование:! Expr
Логический оператор "нет" - унарный оператор, который отрицает выражение операнда expr. То есть если expr true, то возвращает false, и если expr false, то возвращает true.
Так как логические выражения вычисляются слева направо, то они проверены для возможного вычисления "короткой цепи", используя следующее правило:
Логическое правило гарантирует, что эти вычисления будут всегда правильными.
Оператор сравнения сравнивает его операнды и возвращает логическое значение, основанное на том, является ли сравнение true или false. Операнды могут быть численными или строковыми значениями. Когда используется на строковых значениях, то сравнения основывается на стандартном лексикографическом порядке.
Операторы:
В дополнение к операторам сравнения, которые могут использоваться на значениях строк, оператор конкатенации (+), суммирует две строки вместе, возвращая другую строку, которая является соединением двух строк операнда. Например,
"my " + "string"
Возвращает строку
"my string"
Оператор происвоения += может также использоваться, чтобы конкатенировать строки. Например, если переменнай mystring - строка, которая имеет значение "alpha", затем выражение
Mystring + = "bet"Вычисляет как "alphabet" и приписывает это значение mystring.
Старшинством операций называется порядок, в котором выполняются операции в сложных выражениях. Операции на одном уровне имеют равное старшинство. Вычисления производятся слева направо для всех бинарных операций, начиная с операций, перечисленных в верхней части списка, и заканчивая операциями в нижней части.
Старшинство операторов, от самого низкого до самого высокого будут следующие:
Дело в том, что в его постановке и выводах произведена подмена, аналогичная подмене в школьной шуточной задачке на сообразительность, в которой спрашивается:
- Cколько яблок на березе, если на одной ветке их 5, на другой ветке - 10 и так далее
При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.
В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.
Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в FAQ по эфирной физике.