This new String() stuff creates a special string wrapper object, which is for very, very special purposes only. I've never seen it being used by anyone in real life -- except for the victims of w3schools.

Arguments and parameters are not the same. A parameter is a variable you write down in the function signature:

The expression with null and the empty string also makes no sense -- though that's not the fault of w3schools.

JavaScript is weakly typed, which means it doesn't strictly distinguish between different data types. For example, the number 0 and the empty string '' are considered to be "equal" according to the == operator.

This means that many checks with == or != will not behave like you might expect. For example, name != null does not only exclude null, it also exludes undefined. And name != '' does not only exclude the empty string, it also exludes 0, 0.0, NaN, undefined and empty arrays.

Is that what you want? Then the condition would be a pretty bad way of describing that. Or did you actually just want to exclude null and the empty string? In that case, you need to use the strict (in)equality operators === and !==:

Code:

name !== null && name !== ''

If you're looking for good learning resources, check the Mozilla developer network:

Why can’t I use certain words like "drop" as part of my Security Question answers?
There are certain words used by hackers to try to gain access to systems and manipulate data; therefore, the following words are restricted: "select," "delete," "update," "insert," "drop" and "null".