2015-12-04 4 views
1

Как говорится в вопросе, что именно является функцией оператора! ==? (Эквивалент, равный, равный).Что такое оператор! == в JavaScript?

Да, есть два равных знака. Я нашел его here.

function endsWith(str, suffix) { 
    return str.indexOf(suffix, str.length - suffix.length) !== -1; 
} 

Является ли это опечатка? Я сомневаюсь в этом. Это старое сообщение и с таким количеством вершин, оно должно быть исправлено однажды или другое.

Или это действительный оператор? Если да, то что он делает?

+2

[MDN - Неточное/строгое неравенство (! ==)] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Non-identity_strict_inequality_ (!)) – zerkms

+0

Есть много вопросов по этой теме, которые можно найти на этом сайте. Я рекомендую прочитать [this] (http://bonsaiden.github.io/JavaScript-Garden/#types.equality) о сравнении. – A1rPun

+3

[ES2015 - 7.2.13 Сравнение строгого равенства] (http://www.ecma-international.org/ecma-262/6.0/# sec-strict-equal-compare) – zerkms

ответ

2

Это строгое неравенство: a !== b типа тогда и только тогда (a) ≠ типа (b) или ab.

Поскольку строгое равенство (===) определяется как:

  • a === b типа тогда и только тогда (a) = тип (b) ∧ a = b,

Строгое неравенство является его отрицание, так:

  • !(a === b)
  • ! (тип (a) = тип (b) ∧ a = b)
  • ≡ (тип (a) ≠ типа (b) ∨ ab).

Рекомендации. Семантика сравнения находится в #strict-equality-comparison спецификации ES6.

Ack. Благодаря коррекции zerkms типы сначала оцениваются. Это важно, потому что, если типы не совпадают, неравенство даже не будет проверено. Также благодаря ему за то, что он указал мне нужное место в спецификации для семантики отношения.

+1

Btw, тип сначала сравнивается. – zerkms

+0

@zerkms Ницца! Я взглянул на [семантику] (http://www.ecma-international.org/ecma-262/6.0/#sec-equality-operators-runtime-semantics-evaluation), но не понял этого. –

+2

это здесь http://www.ecma-international.org/ecma-262/6.0/#sec-strict-equality-comparison – zerkms

1

Действительно. Это в основном делает строгое сравнение без равенства. Проверьте, не совпадает ли тип, а также значение.

Смежные вопросы