the variable name isn't the problem. let go back to your original code, specifically to the lines i told the problem is.
if ((name="") || (weight="") || (age=""))
here you meant to compare each variable if are empty string, not to assign an empty string. so one = is to assign (assignment operator) while two == is to compare (equality operator).
here the logic is wrong. you meant to return false and display the alert only when the typed age is less than 17.
// the first operator take each operand and compare them returning a boolean of [b]true[/b];
// then the returned boolean is used in the second operation. because boolean and integer
// converted to integer [b]1[/b], and a [b]false[/b] is converted to integer [b]0[/b];
// now it result as [b]!true[/b] which in turn result as [b]false[/b].
so, the block is never executed. the reason this exactly happen is because you always will have to comparison true < 300 or false < 300 which is the same as 1 < 300 or 0 < 300. what you need is to separate both operation so that coercion don't take place:
if ((weight < 80) || (weight > 300))
// notice i don't used the [b]complement operator (!)[/b];
it means, execute the block only if weight is less than 80 or weight greater than 300.