Fix property lookup on booleans in needsWhitespace. (#6584)

The code

```js
linesInfo && linesInfo[type]
```

performs a lot of dynamic lookups on the `Boolean.prototype`, as the
*ToBoolean* operation let's `true` pass for `linesInfo` (which might
itself be concerning that this can be a boolean). Instead of the
coercion, the code should properly check for valid objects via `typeof`
and strict equality with `null` comparison.

This is a non-breaking performance fix.
This commit is contained in:
Benedikt Meurer 2017-10-29 02:16:48 +02:00 committed by Henry Zhu
parent 5baa36109e
commit ffe4301fe2

View File

@ -75,7 +75,11 @@ export function needsWhitespace(node, parent, type) {
}
}
return (linesInfo && linesInfo[type]) || 0;
if (typeof linesInfo === "object" && linesInfo !== null) {
return linesInfo[type] || 0;
}
return 0;
}
export function needsWhitespaceBefore(node, parent) {