JSFiddle - React, Tailwind, and code Playground

by davepoon128

JavaScript

// Loops with Closures

/*
function assignTorpedo( name, passengerArray ) {
	var torpedoAssignment;
	for (var i = 0; i < passengerArray.length; i++) {
  	if (passengerArray[i] == name) {
    	torpedoAssignment = function () {
      	alert("Ahoy, " + name + "!\n" + "Man your post at Torpedo #" + (i+1) + "!");
      };
    }
  }
	return torpedoAssignment;
}

var subPassengers = ["Luke", "Leia", "Han", "Chewie", "Yoda", "R2-D2", "C-3P0", "Boba"];
var giveAssignment = assignTorpedo("Chewie", subPassengers);
giveAssignment();
*/

// Solution 1
/*
function assignTorpedo( name, passengerArray ) {
	for (var i = 0; i < passengerArray.length; i++) {
  	if (passengerArray[i] == name) {
    	return function () {
      	alert("Ahoy, " + name + "!\n" + "Man your post at Torpedo #" + (i+1) + "!");
      };
    }
  }
}
var subPassengers = ["Luke", "Leia", "Han", "Chewie", "Yoda", "R2-D2", "C-3P0", "Boba"];
var giveAssignment = assignTorpedo("Chewie", subPassengers);
giveAssignment();
*/

// Solution 2
function makeTorpedoAssigner( passengerArray ) {

	return function ( name ) {
    for (var i = 0; i < passengerArray.length; i++) {
      if (passengerArray[i] == name) {
          alert("Ahoy, " + name + "!\n" + "Man your post at Torpedo #" + (i+1) + "!");
      }
    }
  };
  
}
var subPassengers = ["Luke", "Leia", "Han", "Chewie", "Yoda", "R2-D2", "C-3P0", "Boba"];
var getTorpedoFor = makeTorpedoAssigner(subPassengers);
getTorpedoFor("R2-D2");