Порядок оценки Javascript - PullRequest
6 голосов
/ 01 апреля 2011

Наткнулся на этот фрагмент JS, и я, честно говоря, понятия не имею, в каком порядке оцениваются вещи ... Есть идеи? Скобки были бы полезны ...

return point[0] >= -width / 2 - allowance &&
       point[0] <= width / 2 + allowance && 
       point[1] >= -height / 2 - allowance && 
       point[1] <= height / 2 + allowance;

Ответы [ 5 ]

2 голосов
/ 01 апреля 2011

отметьте это

function bob(n){
  alert(n);
  return n;
}

return bob(1) >= bob(2) / bob(3) - bob(4) &&
       bob(5) <= bob(6) / bob97) + bob(8) && 
       bob(9) >= bob(10) / bob(11) - bob(12) && 
       bob(13) <= bob(14) / bob(15) + bob(16);
2 голосов
/ 01 апреля 2011

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence

Соответствующие операторы идут в следующем порядке: унарное отрицание, деление, сложение / вычитание, реляционные (> =, <=), логические и. </p>

return (point[0] >= ((-width / 2) - allowance))
    && (point[0] <= ((width / 2) + allowance))
    && (point[1] >= ((-height / 2) - allowance))
    && (point[1] <= ((height / 2) + allowance))
2 голосов
/ 01 апреля 2011

Эквивалентно:

return
    (point[0] >= ((-width  / 2) - allowance))
 && (point[0] <= (( width  / 2) + allowance))
 && (point[1] >= ((-height / 2) - allowance))
 && (point[1] <= (( height / 2) + allowance));
0 голосов
/ 01 апреля 2011

return (point[0]) >= (-width / 2 - allowance) && (point[0] <= width / 2 + allowance) && (point[1] >= -height / 2 - allowance) && (point[1]) <= (height / 2 + allowance);

0 голосов
/ 01 апреля 2011

Добавление паратезов и некоторых отступов должно прояснить ситуацию:

return 
  point[0] >= (-width / 2) - allowance 
    && 
  point[0] <= (width / 2) + allowance 
    && 
  point[1] >= (-height / 2) - allowance 
    && 
  point[1] <= (height / 2) + allowance;
...