function print(x) {
document.write(x);
}
(function(){
[1,2,3].forEach(print);
print('<br>');
})();
(function(){
function splat(fn) {
return function(array) {
return fn.apply(null, array);
};
}
var addArrayElements = splat(function(x, y){ return x + y; });
print( addArrayElements([1, 2]) );
print('<br>');
function unsplat(fn) {
return function() {
return fn.call(null, _.toArray(arguments));
};
}
var joinElements = unsplat(function(array) { return array.join(' ') });
print( joinElements(1,2,3,4,5) );
print('<br>');
})();
(function(){
function pareseAge(age) {
if (!_.isString(age)) throw new Error('Expecting a string.');
var a;
print( 'Attempting to parse an age.' );
a = parseInt(age, 10);
if (_.isNaN(a)) {
conole.log(['Could not parse age: ', age].join(' '));
a = 0;
}
return a;
}
print( pareseAge('42') );
print( pareseAge(42) );
print( pareseAge('hehe') );
});
(function(){
function fail(thing) {
throw new Error(thing);
}
function warn(thing) {
console.log(['WARNING:', thing].join(' '));
}
function note(thing) {
console.log(['NOTE:', thing].join(' '));
}
function pareseAge(age) {
if (!_.isString(age)) fail('Expecting a string.');
var a;
note( 'Attempting to parse an age.' );
a = parseInt(age, 10);
if (_.isNaN(a)) {
warn(['Could not parse age: ', age].join(' '));
a = 0;
}
return a;
}
print( pareseAge('hehe') );
var letters = ['a', 'b', 'c', 'd'];
console.log( letters[2] );
function naiveNth(a, index) {
return a[index];
}
console.log( naiveNth(letters, 3) );
console.log( naiveNth({}, 3) );
function isIndexed(data) {
return _.isArray(data) || _.isString(data);
}
function nth(a, index) {
if (!_.isNumber(index)) fail('Expected a number as the index.');
if (!isIndexed(a)) fail('Not supported on non-indexed type.');
if ((index < 0) || (index > a.length - 1)) fail('Index value is out of bounds.');
return a[index];
}
console.log('-----nth()-----');
console.log(nth(letters, 1));
})();
console