Когда условный оператор в JavaScript выполняется, он возвращает последнее оцененное значение.
var x = "";
alert(x && x.length > 0);
Пустая строка: falsey , поэтому при использовании только x
вусловие, это будет ложь .Поскольку вы используете &&
, если LHS false , то нет причин беспокоиться о проверке RHS.Это оценка короткого замыкания .Поэтому последняя оцененная часть, пустая строка, возвращается в alert()
.
var y = "abc";
alert(y && y.length > 0);
Непустая строка - truey .Таким образом, LHS равен true , и, поскольку это &&
, RHS оценивается (необходимо знать, является ли все условие true ).Возвращаемое значение y.length > 0
равно true
, поэтому оно передается вашему alert()
.