[Javascirpt] Immediately-Invoked function!!! IMPORTANT
var parkRides = [["Birch Bumpers", 40], ["Pines Plunge", 55],
["Cedar Coaster", 20], ["Ferris Wheel of Firs". 90]]; var fastPassQueus = ["Cedar Coaster", "Pines Plunge", "Birch Bumpers", "Pines Plunge"]; var wantsRide = "Birch Bumpers";
/*Now we store the function in a variable*/
var ticket = buildTicket(allRides, passRides, wantsRide);
ticket(); //call the function, we need a () and ; /*Javascript has an immediately-invoked function*/
var wantsRide = "Cedar Coaster";
//This time we get ride of the ticket variable
//and we just call the buildTicket function without return anything
buildTicket(allRides, passRides, wantsRide);
/**
//What it returns is the whole body of the function only (function(){alert("Quick! You've got a Fast Pass to "+ pass +"!")) //We got the function expression, but we need more to call this
//function expression immediately.
*/ buildTicket(allRides, passRides, wantsRide)();
/**
(function(){alert("Quick! You've got a Fast Pass to "+ pass +"!"))(); //Then it will call the function expression
*/ function buildTicket(allRides, passRides, pick){
if(passRides[0]==pick){
var pass = passRides.shift();
return function(){alert("Quick! You've got a Fast Pass to "+ pass +"!");};
}else{
for(vari = 0; i < allRides.length; i++){
if(allRides[i][0]==pick){
return function(){alert("A ticket is printing for "+ pick + "!\n" +
"Your wait time is about "+ allRides[i][1]+ "minutes.");};
}
}
}
}
Tow ways to call a function expression immediately.
1. var ticket = buildTicket(allRides, passRides, wantsRide);
ticket(); //call the fucntion here!
2. buildTicket(allRides, passRides, wantsRide)(); //Without store function in a variable!!!
-------Example------
function adventureSelector ( userChoice ){
  switch(userChoice){
    case 1:
      return function(){
        alert('You\'ve selected the Vines of Doom!'
             + "\n" +
             'Hope you have a swingin\' time.');};
    case 2:
     return function(){
           alert('Looks like you want the Lake of Despair!'
              +"\n"+
              'Watch out for crocs. And I ain\'t talkin\' about shoes.');
      };
    case 3:
      return function(){
        alert('The Caves of Catastrophe, really?'
             +"\n"+
              'Alright, well....nice knowing you.'
             );};
    default:
      break;
  }
}
adventureSelector(1)();
[Javascirpt] Immediately-Invoked function!!! IMPORTANT的更多相关文章
- js 立即调用函数 IIFE(Immediately Invoked Function Expression) 【转】
		原文链接:https://www.cnblogs.com/ming-os9/p/8891300.html JS中 (function(){...})()立即执行函数 1 (function(){. ... 
- JS---------IIFE(Imdiately Invoked Function Expression 立即执行的函数表达式)
		+function($){}(jQuery); 今天看到js代码里面有这个格式的代码,不知道啥意思,就去查了一下,我也是js小白.首先前面的+号,这个不是固定非要写+号,只要写一级运算符都可以.目的是 ... 
- IIFE-js中(function(){…})()立即执行函数写法理解
		介绍IIFE IIFE的性能 使用IIFE的好处 IIFE最佳实践 jQuery优化 在Bootstrap源码(具体请看<Bootstrap源码解析>)和其他jQuery插件经常看到如下的 ... 
- YDKJ 读书笔记 01 Function vs. Block Scope
		Introduction 本系列文章为You Don't Know JS的读书笔记. 书籍地址:https://github.com/getify/You-Dont-Know-JS Scope Fro ... 
- JS中 (function(){...})()立即执行函数
		(function(){...})() (function(){...}()) 这是两种js立即执行函数的常见写法. 基本概念: 函数声明:function fname(){...}; 使用funct ... 
- js (function(){}()),(function(){})(),$(function(){});之间的区别
		参考:https://blog.csdn.net/stpice/article/details/80586444 (function(){}()), (function(){})() 均为立即执行函数 ... 
- js中(function(){}()),(function(){})(),$(function(){});之间的区别
		1. (function(){}())与(function(){})() 这两种写法,都是一种立即执行函数的写法,即IIFE (Immediately Invoked Function Express ... 
- JavaScript简易教程(转)
		原文:http://www.cnblogs.com/yanhaijing/p/3685304.html 这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScri ... 
- html、css、js的命名规范
		最佳原则 坚持制定好的代码规范. 无论团队人数多少,代码应该同出一门. 项目命名 全部采用小写方式, 以下划线分隔. 例:my_project_name 目录命名 参照项目命名规则: 有复数结构时,要 ... 
随机推荐
- 二分搜索之C++实现
			二分搜索之C++实现 一.源代码:BinarySearch.cpp #include<iostream> using namespace std; /*定义输出一维数组的函数*/ void ... 
- luoguP2490 [SDOI2011]黑白棋 博弈论 + 动态规划
			博弈部分是自己想出来的,\(dp\)的部分最后出了点差错QAQ 从简单的情况入手 比如\(k = 2\) 如果有这样的局面:$\circ \bullet $,那么先手必输,因为不论先手怎样移动,对手都 ... 
- Linux下禅道系统的搭建
			说明: 禅道系统的搭建,分两大部分 1.xampp环境的搭建 2.禅道系统的搭建 *********************************************************** ... 
- 解决 git push Failed to connect to 127.0.0.1 port 45463: 拒绝连接
			使用Github pull 代码突然报错: Failed to connect to 127.0.0.1 port 43421: Connection refused 使用 lsof 发现端口未被占用 ... 
- 全栈project师体能备战--知识面(1--10)
			javascript 单例设计模式: 单例模式确保某个类仅仅有一个势力,并且自行实例化并向整个系统提供这个实例.如:cocos2dx中的导演类.[样例]我有6哥美丽的老婆,他们的老公都 ... 
- The YubiKey -- HOW IT WORKS
			A single YubiKey has multiple functions for protecting access to your email, your apps and your phys ... 
- window api 监控
			http://pnig0s1992.blog.51cto.com/393390/704189 
- Delphi TClientDataSet的使用
			1.TClientDataSet的基本属性和方法介绍 1).FieldDefs: 字段定义列表属性 开发者可通过单击属性编辑器中该属性编辑按钮,或在该控件上单击右键选择弹出菜单中的"Fiel ... 
- datagrid在MVC中的运用09-实现排序
			本文体验datagrid的排序. □ 思路 当点击datagrid的标题,视图传递给Controller的Form Data类似这样:page=1&rows=10&sort=Custo ... 
- Mybatis 传入List类型参数,报错:There is no getter for property named '__frch_item_0' in
			错误如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Re ... 
