Ответ 1
!
является логическим не оператором в JavaScript.
Формально
!expression
читается как:
- Возьмите
expression
и оцените его. В вашем случаеvariable.onsubmit
- Приведите результат этой оценки и преобразуйте ее в логическое. В вашем случае, поскольку
onsubmit
, скорее всего, является функцией, это означает - если функция undefined - возвращает false, в противном случае вернет true. - Если эта оценка истинна, верните false. В противном случае верните true.
В вашем случае
В вашем случае !variable.onsubmit
означает return true, если функция не определена (и, следовательно, является ложью), в противном случае возвращает false (поскольку существует определенная функция).
Проще говоря - !variable
означает значение истины variable
и отрицает его.
Таким образом, if (!variable) {
войдет в предложение if
, если переменная false
(или принуждает к false)
Всего
if (!variable.onsubmit || (variable.onsubmit() != false)) {
Средство - проверить, определено ли variable.onsubmit
и правдиво (истинно), тогда он проверяет, возвращает ли вызов onsubmit
результат, который приводит к истинному. В короткой строке он проверяет, нет ли onsubmit
или он возвращает true.
В следующий раз, как мне это найти?
- Здесь MDN имеет список операторов.
- Спецификация языка определяет такие операторы, хотя она является официальной спецификацией, в которой содержится некоторый жаргон, который может быть трудно понять.