Возьмите 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.
Спецификация языка определяет такие операторы, хотя она является официальной спецификацией, в которой содержится некоторый жаргон, который может быть трудно понять.
Ответ 2
Это оператор отрицания, используемый для проверки истинности переменной.
var myVariable = 1;
if ( ! myVariable )
{
// myVariable evaluates as false
}
if ( myVariable )
{
// myVariable evaluates as true
}