Почему () нужны в этом блоке кода Javascript?

Я понимаю, что в javascript много ловушек, но я до сих пор не понимаю, есть ли разница между выражением a&1 и (a&1) ??

следующий код пытается преобразовать 11 (10 оснований) в строку 1101 (2 основания)

<script>
var str = '';
var a = 11;
for(var i=0;a;i++){
    str = a & 1 + str; // this doesn't work must rewrite as 
    // str = (a & 1) + str;
    console.log('str = ' + str);
    a >>>=1;
}
console.log(str);
</script>

person Huibin Zhang    schedule 05.11.2014    source источник
comment
Просто чтобы вы знали, есть встроенный: (11).toString(2).   -  person georg    schedule 05.11.2014


Ответы (1)


Это связано с приоритетом оператора.

Дополнение имеет более высокий приоритет, чем Побитовое И. Поэтому, когда оценивается a & 1 + str, сначала оценивается 1 + str, а затем оценивается a & result.

Используя оператор группировки, мы можем изменить порядок оценки. . Поэтому, когда оценивается (a & 1) + str, содержимое внутри () (a & 1) оценивается первым, result + str оценивается.

person Arun P Johny    schedule 05.11.2014