The typeof answers are good, here's a bit extra. To me, this is a case where you need to explain what you are doing with params. If you are doing say:
function foo(paramObject) {
// determine if a suitable value for paramObject has been passed
}
then likely you should be testing whether paramObject is an object, not whether it has some value other than undefined. So you might do:
if (typeof paramObject == 'object') {
// paramObject is an object
}
but you still don't know much about the object, it could be anything (including null). So generally you document the object that should be passed in and just do:
if (paramObject) {
// do stuff, assuming if the value is not falsey, paramObject is OK
}
now if it throws an error, that's the caller's fault for not providing a suitable object.
The corollary is that all variables should be declared so that the test doesn't throw an error (and you don't need to use typeof, which is one of those half useful operators that promises much but doesn't deliver a lot).
undefined, that should be fine. by undefined, if you include an empty string, 0, null, etc. then that won't catch those.