2017-01-18 3 views
-2

Из приведенного ниже кода, когда я хочу сравнить переменные y и z, здесь строгий тип сравнения соответствует, но y == z не соответствует. Может ли кто-нибудь объяснить причину и как работает строгий тип?сравнение одиночных кавычек и двойных кавычек в javascript - Строгий тип

<script language="javascript" type="text/javascript"> 
    var x=11; 
    var y="11"; 
    var z='11'; 

    if(x==y) 
     alert('x==y'); 
    if(y==z) 
     alert('y==z'); 
    if(x===y) 
     alert('x===y'); 
    if(y===z) 
     alert('y===z'); 
    if(x==z) 
     alert('x==z'); 
    if(x===z) 
     alert('x===z'); 
</script> 
+0

Строгий типа на '" 'и' ' '[работает отлично] (https: // я. stack.imgur.com/qkHhF.png). –

+0

@JamesThorpe для меня тоже –

+0

«но y == z не соответствует» - Да это: http://jsbin.com/qatucom/1/edit?js, console – Quentin

ответ

1

Обе строки, а также это соответствие.

> typeof "11"; 
"string" 
> typeof '11'; 
"string" 
> "11" === '11' 
true 
> "11" == '11' 
true 
0

При использовании двойных Equals (Сыпучего равенства) вы только сравнить значения, но при использовании трех равных (строгого равенства) вы сравните типы тоже.

Свободное равенство сравнивает два значения для равенства после преобразования обоих значений в общий тип.

Так что, если

var y = 11; // number 
var z = '11'; // string 

var equalValues = y == z; // true 
var equalValuesAndTypes = y === z; // false 

Вы можете проверить MDN docs

+0

Он сравнивает '' 11 '=== "11" ', а не' 11 ===' 11''. –

1

JavaScript имеет как строгий и тип-превращающего сравнение равенства. Для строгого равенства сравниваемые объекты должны иметь один и тот же тип:

Две строки строго равны, если они имеют одинаковую последовательность символов одинаковой длины и одинаковых символов в соответствующих позициях. Два числа строго равны, когда они численно равны (имеют одинаковое значение числа). NaN не равно никому, включая NaN. Положительные и отрицательные нули равны друг другу. Два булевых операнда строго равны, если оба истины или оба являются ложными. Два объекта строго равны, если они относятся к одному и тому же объекту. Null и Undefined типы == (но не ===). [Т.е. (Null == Undefined) истинно, но (Null === Undefined) ложна]

Check this out

+0

Но используя одиночные кавычки и цитаты dobule, создают переменную строку, так что оба являются строками. Ваш ответ бесполезен. –

+0

Я говорю differenc e между == и ===. Проверьте ссылку – Nimish

+0

Да, но он сравнивает две строки (одинарные кавычки и двойные кавычки), поэтому проблема сравнения не существует. –

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