Chapter 2 - named paramters

by Denise Nepraunig

HTML

<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.14.0.css">
<script src="http://code.jquery.com/qunit/qunit-1.14.0.js"></script>
<div id="qunit"></div>
<div id="qunit-fixture"></div>

JavaScript

// Programming JavaScript Applications
// Chapter 2
// named parameters in functions

var userProto = {
    name: '',
    email: '',
    alias: '',
    showInSearch: true,
    colorScheme: 'light'
};

// here the example how you should not do it!

function createUser(name, email, alias, showInSearch, colorScheme) {
    return {
        name : name || userProto.name,
        email: email || userProto.email,
        alias: alias || userProto.alias,
        showInSearch: showInSearch || userProto.showInSearch,
        colorScheme: colorScheme || userProto.colorScheme
    }
}

QUnit.test("User account creation", function(assert) {
    var newUser = createUser('Denise', '', '', '', 'dark');
    
    QUnit.equal(newUser.colorScheme, 'dark', 'storing colorScheme works');
});

// here is a better example

function createUser2(options) {
    return $.extend({}, userProto, options);
}

var newUser2 = createUser2({
    name: 'Mike',
    showInSearch: false
});

QUnit.test("User account creation with extend", function(assert) {
    QUnit.equal(newUser2.showInSearch, false, "extend worked!");
});