/ / JavaScript & самостоятелно изпълняващи функции - javascript, jquery, функция

JavaScript и самостоятелно изпълняващи функции - javascript, jquery, функция

Опитвам се да разбера (вероятно простоконцепции) за JS, и аз съм поставил заедно по-долу част от кода, за да обясня какво не получавам. Това, което не разбирам е къде се съхранява променливата на името. Дали тази променлива сега е глобална?

(function($) {

var name = "";

$.helloWorld = function(yourName) {
name = yourName;
console.log("Hello " + yourName);
}

}(jQuery));

Отговори:

4 за отговор № 1

Най- name променливата е локална към външната функция, защото е декларирана с var ключова дума. Вътрешната функция е затваряне, което съдържа препратка към тази променлива. Ето по-добър пример, който показва това:

(function($) {

var name = "";

$.setName = function(newName) {
name = newName;
}

$.showName = function() {
console.log("Name is: " + name);

}(jQuery));

След като дефинирате това, можете да го направите:

$.setName("Larry");
$.showName();
$.setName("Fred");
$.showName();

виждам Как функционират JavaScript затварянията?


2 за отговор № 2

Това трябва да ви помогне да разберете:

(function(){

var name;
var scope1;

// Here you can use scope1 and name

(function(){

var name;  //  <------------------------
var scope2;                         // |
// |
// Here you can use scope1,scope2, and name

(function(){

var name;   //  <------------------------------
var scope3;                                 // |
// |
// Here you can use scope1,scope2,scope3, and name

})();

})();

})();

// Anyvariable declared outside of any function scope is in the global scope.
// A variable declared here can be accessed by window.name from any scope
var name = 5;

Така в този фрагмент се създават 3 обхвата от трите функции и в най-вътрешното можете да получите достъп до променливите, които имат уникални имена (scope1, scope2 и scope3), както и локалната променлива. name, което е отделно име от това, което е средният обхват. Повторното използване на имена на променливи като тези за предотвратяване на достъп до променливата във външен обхват се нарича сенкиране.

Обърнете внимание, че променлива, която не е декларирана с var ключова дума се приема автоматично за глобално. Лоша практика е да се декларират много променливи в глобалния обхват, тъй като те лесно могат да се конфликтуват с други скриптове.