2016-03-14 3 views
-3

Может кто-нибудь объяснить мне, почему вторая функция в первой функции не определена?Функция JavaScript в функции undefined

var a = 1 

function abc() { 
    alert(a); 
     function xyz() { 
      alert(a); 
     } 
} 

https://jsfiddle.net/kp950/yLs73cth/

+1

Вы должны включить свой HTML-код в свой вопрос здесь, чтобы он имел смысл. –

+1

Это не является неопределенным *** внутри 'abc'. *** Однако это не в глобальном масштабе *, очевидно. – deceze

+1

Относительно обработчиков событий, связанных с обработкой ошибок, в таких вещах, как атрибуты onclick, обычно требуется, чтобы их объекты были доступны в глобальной области. Это также довольно датированный метод - вы должны изучить использование [прослушивателей событий] (https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener), которые позволяют произвольно устанавливать функции и все равно им приходится реагировать на такие вещи, как щелчки на кнопках. –

ответ

1

xyz внутренняя функция, которая является частным abc функции. Вы не можете позвонить по телефону xyz, если вы не сделаете это общедоступным

+0

Похоже, что вы можете позвонить по abc(). Xyz() https://jsfiddle.net/yLs73cth/4/ – spex5

+0

@ spex5 Смотрите мои комментарии по вопросу, связанному с этим - 'xyz' на самом деле не работает там , это порождает ошибку. И @ user2181397 сказал «если вы не сделаете это публично». Возвращение внутренней функции из внешнего _is_ делает ее общедоступной. –

1

Это связано с областью действия, в которой вы пытаетесь выполнить xyz() (глобально). xyz() может выполняться только внутри abc() - где это определено в локальном объеме.

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