Last active
June 26, 2017 19:58
-
-
Save OlehRovenskyi/66e764398c4afcff43fda42cabfc7134 to your computer and use it in GitHub Desktop.
js function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// function | |
function hello() { | |
return 'Hello'; | |
} | |
hello() // hello | |
hello() // hello | |
// function with params | |
function func (a, b) { | |
return a + b; | |
} | |
console.log( func(2,3) ); | |
// undefined when the pass is not all options | |
function func1 (a, b) { | |
return a + b; | |
} | |
console.log( func1(2) ); // NaN | |
// using || (ИЛИ) | |
function func2 (a, b) { | |
b = b || 2; | |
return a + b; | |
} | |
console.log( func2(2) ); | |
// function declaration | |
// funcDec, funcExp - variable | |
function funcDec (a, b) { | |
return a + b; | |
} | |
console.log( funcDec(2,3) ); | |
// function expression | |
var funcExp = function(a, b) { | |
return a + b; | |
}; | |
console.log( funcExp(2,3) ); | |
// anonymous function | |
function() { | |
console.log('hi'); | |
} | |
// conditional function declaration | |
var test; | |
if () { | |
test = function() { | |
console.log(true); | |
}; | |
} else { | |
test = function() { | |
console.log(true); | |
}; | |
} | |
test(); | |
// hosting | |
function func1() { | |
function funcExample() { | |
return 'one dec'; | |
} | |
return funcExample(); | |
function funcExample() { | |
return 'two dec'; | |
} | |
}; | |
console.log(func1()); | |
// The difference between 'dec' and 'exp' function | |
function func2() { | |
var funcExample = function() { | |
return 'one exp'; | |
} | |
return funcExample(); | |
var funcExample = function() { | |
return 'two exp'; | |
} | |
}; | |
console.log(func2()) | |
// hosting | |
function func1() { | |
function funcExample() { | |
return 'one'; | |
} | |
var variable = funcExample(); | |
function funcExample() { | |
return 'two'; | |
} | |
return variable; | |
}; | |
console.log(func1()); | |
// функции обратного вызова (callback). | |
// Функция которая вызовется после определенного условия. | |
var func = function(callback) { | |
var name = "Nick"; | |
return callback(name); | |
}; | |
console.log( func( function(n){ | |
return "Hello " + n; | |
}) ); | |
//возвращение функции | |
var func1 = function() { | |
return function() { | |
console.log( 'Привет!!!' ); | |
}; | |
}; | |
// func1(); | |
// func1()(); | |
// Immediately-Invoked Function Expression (IIFE) | |
;(function() { | |
console.log( 'Привет от анонимной самовызывающейся функции!!!' ); | |
})(); | |
// позволяет скрывать код от глобальной области видимости | |
var prop = 1; | |
;(function() { | |
var prop2 = 2; | |
console.log( 'Привет от анонимной самовызывающейся функции!!!' ); | |
console.log( 'prop ', prop ); | |
console.log( 'prop2 in local scope ', prop2 ); | |
})(); | |
console.log( 'prop2 in global scope ', prop2 ); // Uncaught ReferenceError: prop2 is not defined | |
// либо с параметрами | |
// ананимная самовызывающаяся функция это основа модульного подхода в js | |
// var prop1 = 1; | |
// ;(function($, pro) { // обозначаем как будем внутри использовать | |
// console.log( pro ); | |
// var prop2 = 2; | |
// console.log( 'Привет от анонимной самовызывающейся функции!!!' ); | |
// console.log( 'prop2 in local scope ', prop2 ); | |
// })(jQuery, prop); // передаем обьект или переменную | |
var prop1 = 1; | |
var module = (function(pro) { | |
console.log( pro ); | |
})(prop1); | |
;(function(pro) { // обозначаем как будем внутри использовать | |
console.log( pro ); | |
})(prop1); // передаем обьект или переменную | |
// объект arguments | |
var funcArg = function() { | |
console.log(arguments); | |
} | |
funcArg(); | |
// -------- | |
var funcArg = function(a, b) { | |
console.log(arguments); | |
} | |
funcArg(1, 2); | |
// -------- | |
var funcArgs = function(){ | |
var i; | |
var sum = 0; | |
for (i = 0; i < arguments.length; i++ ) { | |
sum += arguments[i]; | |
}; | |
return sum; | |
}; | |
console.log( funcArgs(1,2,3) ); | |
// Function constructor. Creating new object | |
function Animal(name) { | |
this.name = name | |
this.canWalk = true | |
} | |
var animal = new Animal('rabbit') | |
// Function as a method | |
function log123() { | |
console.log(123); | |
} | |
var obj = { | |
name: 'Arni', | |
method: function() { | |
console.log('method'); | |
} | |
} | |
obj.method(); | |
obj.method2 = log123; | |
obj.method2(); | |
// Scope | |
var funcExp2 = function (name) { | |
var test = 10; | |
return name; | |
} | |
funcExp2('Arni'); | |
console.log(test); // VM112:9 Uncaught ReferenceError: test is not defined | |
// scope examples | |
//глобальные переменные | |
var oneOne = 1; | |
// всегда пиши var !!! | |
globalll = 2444; | |
var outer = function () { | |
var arr1 = [1,2,3]; | |
for ( i = 0; i < arr1.length; i++) { | |
console.log( 'first cycle: ', i ); | |
inner(); | |
} | |
}; | |
var inner = function() { | |
var arr2 = [4,6,8]; | |
for ( i = 0; i < arr2.length; i++) { | |
console.log( 'second cycle: ', i ); | |
} | |
}; | |
outer(); | |
//цепочка областей видимости | |
var k = 4; | |
var outerScope = function() { | |
console.log( k ); | |
var k = 8; | |
console.log( k ); | |
var innerScope = function(){ | |
var k = 12; | |
console.log( k ); | |
}; | |
} | |
innerScope(); | |
console.log( k ); | |
}; | |
outerScope(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment