I just tried running “!null” in Safari 2.0.4 and got “true”. Which version has the problem you mentioned? Also, another way to handle the named arguments thing is by passing a hash rather than a list of arguments. This is how Prototype does things:

var myfunc2 = function(options) {
// […]
}
myfunc2({title: “test”, enable_notify: true});

The disadvantage here is that you have no explicit list in the function declaration and the extra {}. The advantage is that you don’t pollute the global scope with lots of variables.