├── .gitignore ├── .vscode └── launch.json ├── LICENSE ├── README.md └── lectures ├── lecture10.js ├── lecture11.js ├── lecture12.js ├── lecture13.js ├── lecture2.js ├── lecture3.js ├── lecture4.js ├── lecture5.js ├── lecture6.js ├── lecture7.js ├── lecture8.js └── lecture9.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (http://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # Typescript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "chrome", 9 | "request": "launch", 10 | "name": "Launch Chrome", 11 | "url": "http://localhost:8080", 12 | "webRoot": "${workspaceFolder}" 13 | }, 14 | { 15 | "type": "node", 16 | "request": "launch", 17 | "name": "Launch Program", 18 | "program": "${workspaceFolder}/lectures\\lecture8.js" 19 | } 20 | ] 21 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 HM Nayem 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # functional-javascript-tutorial -------------------------------------------------------------------------------- /lectures/lecture10.js: -------------------------------------------------------------------------------- 1 | var arr = [5, 9, 1, 2, 3, 4, 5]; 2 | 3 | // arr.forEach(function(element, index, arr){ 4 | // console.log('Element is = ' + element + ' Index = ' + index + ' arr = ' + arr); 5 | // }); 6 | 7 | function loop(arr, callback) { 8 | for (var i=0; i= 18) { 44 | // callback(person.email); 45 | // } else { 46 | // console.log('You are too little...'); 47 | // } 48 | // } 49 | 50 | // printMySelf(me, function(email){ 51 | // console.log('Email sent to ' + email); 52 | // }); 53 | 54 | function print(data, callback1, callback2) { 55 | console.log('Original Data: ' + data); 56 | callback1(data); 57 | callback2(data); 58 | } 59 | 60 | print('Twinkle Cats is Awesome Channel for Beginners', function(data){ 61 | var data = data.toUpperCase(); 62 | console.log('Uppercase: ' + data); 63 | 64 | }, function(data){ 65 | var data = data.toLowerCase(); 66 | console.log('Uppercase: ' + data); 67 | console.log('Length: ' + data.length); 68 | 69 | }); -------------------------------------------------------------------------------- /lectures/lecture7.js: -------------------------------------------------------------------------------- 1 | // function host() { 2 | // console.log('I am host function..'); 3 | // return function() { 4 | // console.log('I am Chiled'); 5 | // } 6 | // } 7 | 8 | // var a = host(); 9 | // a(); 10 | 11 | 12 | // function greeting(msg) { 13 | // return function(name) { 14 | // console.log(msg + ' ' + name); 15 | // } 16 | // } 17 | 18 | function greeting(msg) { 19 | function ret(name) { 20 | console.log(msg + ' ' + name); 21 | } 22 | 23 | return ret; 24 | } 25 | 26 | var good = greeting('Good Morning'); 27 | var hello = greeting('Hello'); 28 | 29 | hello('Twinkle Cats'); 30 | good('Twinkle Cats'); 31 | 32 | -------------------------------------------------------------------------------- /lectures/lecture8.js: -------------------------------------------------------------------------------- 1 | // var name = 'Twinkle Cats'; 2 | 3 | // function sayName() { 4 | // console.log('Hello, ' + name); 5 | // } 6 | // // console.dir(sayName); 7 | // sayName(); 8 | 9 | function greeting(msg) { 10 | return function(name) { 11 | console.log(msg + ' ' + name); 12 | } 13 | } 14 | 15 | var hello = greeting('Hello'); 16 | hello('Twinkle Cats'); -------------------------------------------------------------------------------- /lectures/lecture9.js: -------------------------------------------------------------------------------- 1 | // var arr = [67, 34, 21, 45, 6, 29, 38, 55, 76, 10]; 2 | 3 | // arr.sort(function(a, b){ 4 | // return a-b; 5 | // }); 6 | 7 | // console.log(arr); 8 | 9 | var people = [ 10 | {name: 'HM Nayem', age: 22}, 11 | {name: 'Abir Azim', age: 23}, 12 | {name: 'Jubel Ahmed', age: 18}, 13 | {name: 'Al Rafi', age: 19}, 14 | {name: 'Mr. X', age: 33}, 15 | {name: 'Mr. Y', age: 27} 16 | ] 17 | 18 | // people.sort(function(a, b) { 19 | // return b.age - a.age; 20 | // }); 21 | 22 | people.sort(function(a, b){ 23 | if (a.name > b.name) { 24 | return 1; 25 | } else if (a.name < b.name) { 26 | return -1; 27 | } else { 28 | return 0; 29 | } 30 | }); 31 | 32 | console.log(people); 33 | 34 | 35 | --------------------------------------------------------------------------------