ES6 Anonymous Function Names

See what happens to various anonymous functions.

by _sir

HTML

<ol>

</ol>

JavaScript

// Something to output the content
function output(string) {
  var li = document.createElement('li');
  li.innerHTML = string;
  document.querySelector('ol').append(li);
}

var fn1 = function(string, input) {
	output(string + ' : ' + (typeof input) + " - \"" + input.name + '"');
}

fn1('fn1', fn1); // 1. fn1.name

// Already named once
var fn2 = fn1;
fn2('fn2', fn2); // 2. fn2.name

// What if we bind it?
var fn3 = fn2.bind(null);
fn3('fn3', fn3); // 3. Bound version of fn2

// fn4 returns a new anonymous function
var fn4 = function() { 
	return function() {};
};

fn1('fn4', fn4); // 4: fn4.name -- new function

// Assign the anonymous function returned by fn4.
var fn5 = fn4(); 
fn1('fn5', fn5) // 5. fn5.name

// Do parens make a difference?
var fn6 = (function(){});
fn1('fn6', fn6); // 6. fn6.name

// Trying something different - Pass a function
fn1('nofn', function(){}); // 7. no variable