Я написал объект массива, а затем цикл winna через массив. Я использую функцию подчеркивания _.each для выполнения этой работы. Вдруг это происходит неожиданное дело в моем коде, рассмотрим следующий кодjavascript не имеет функции функции области
var _ = require('underscore');
var myArray = [ 'RE', 'FR', 'TZ', 'SD'];
var traverse = function (element, index, list) {
console.log(para1);
console.log(element);
}
var func1 = function (para1) {
_.each(myArray, traverse);
}
func1('test');
, как выход я получил сообщение об ошибке
Volumes/Develop/node_sample/scope.js:7
console.log(para1);
^
ReferenceError: para1 is not defined
at traverse (/Volumes/Develop/node_sample/scope.js:7:14)
at Array.forEach (native)
at Function._.each._.forEach (/Volumes/Develop/node_sample/node_modules/underscore/underscore.js:79:11)
at func1 (/Volumes/Develop/node_sample/scope.js:13:4)
at Object.<anonymous> (/Volumes/Develop/node_sample/scope.js:16:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
Почему траверс функция не распознает para1 переменную? Я выполняю функцию _.each в func и, на мой взгляд, должен нести сферу действия.
Но если я пишу такой код, то область цепь работает отлично
var _ = require('underscore');
var myArray = [ 'RE', 'FR', 'TZ', 'SD'];
var func1 = function (para1) {
_.each(myArray, function (element, index, list) {
console.log(para1);
console.log(element);
});
}
func1('test');