Получение неожиданного "." от jslint (http://jslint.com/) по этому коду:
function test(foo) {
"use strict";
return (foo || "").replace("bar", "baz");
}
Почему jslint имеет проблему с || оператор, чтобы заставить пустую строку, чтобы замена могла быть выполнена без возникновения ошибки, в случае, если foo передается как undefined?
Это проходит:
function test(foo) {
"use strict";
var xFoo = (foo || "");
return xFoo.replace("bar", "baz");
}
Я знаю, что это основано на мнениях, и я могу игнорировать его и т.д., но пытаюсь понять, почему такая привязка нахмурилась. Также знаю об eshint, но я не пытаюсь обойти это сообщение, просто хочу понять, почему.
Похоже, что первый подход более краткий и более чистый, поскольку ему не нужна дополнительная переменная (xFoo).
Обе функции выполняют точно то же самое при любых условиях.