2014-12-14 5 views
-5

Какова область действия функции ниже, так как ее использование с использованием области окна не работает.Какова область действия этой функции JavaScript

$(document).ready(function(){ 
    function a() { 
     alert("function called from global scope"); 
    } 

    // this alerts 
    a(); //This is global scope? 

    // this doesn't alert 
    window["a"](); //This is also global scope? 
}); 

А также дайте мне знать, как найти область действия функции, объекта или переменной?

+0

a является частной переменной (функции типа) для готового обратного вызова, отображаемого – dandavis

+0

, единственное, что имеет область видимости, - это функции. функции имеют объем самих себя и любые внешние функции. window - это конец строки. – dandavis

+0

Объем этой функции - это объект 'document'. 'document! == window', поэтому вы не можете использовать' window ["a"] 'конечно. – dfsq

ответ

0

У JavaScript есть область действия уровня. Итак, давайте рассмотрим код. Вы определяете две функции в коде. Первая - это функция без имени, которая передается как обратный вызов $(document).ready. Назовем это функция обратного вызова. a определяется внутри этой функции обратного вызова и поэтому находится в локальной области. Таким образом, a может ссылаться только на внутреннюю часть функции обратного вызова.

Вы вызываете a после определения его и смотрите предупреждение. Затем вы пытаетесь получить ссылку на a от глобального объекта (все, что определено глобально, в window в браузере). Поскольку a не определен глобально, вы не можете получить его от window. Фактически вы извлекаете null, и вы видите TypeError: window.a is not a function на консоли при попытке вызвать его с помощью ().

Смежные вопросы