請原諒模糊標題。我不確定是什麼導致了問題,不能更具體。可變範圍問題
我有兩個連續的函數調用,其中第一個函數與第二個函數中的變量「混淆」。儘管在我看來,所有變量都是局部的。
var data = [
'Science Fiction',
'Business/Management',
'Business/Management/Leadership',
];
function getName(parts) {
return parts[parts.length - 1];
}
function getTrail(parts) {
if (parts.length === 1) return null;
parts.pop();
return parts.join('/');
}
function getParents(parts) {
if (parts.length === 1) return null;
parts.pop();
return parts;
}
function generate(path) {
var parts = path.split('/');
return {
name: getName(parts),
trail: getTrail(parts), // <= Problem?
parents: getParents(parts) // <= Last part is missing when getTrail(parts) is called before.
};
}
var categories = data.map(generate);
請參閱http://jsfiddle.net/n6Dud/一個更好的間隔和工作的例子。
當您運行該示例時,您可以檢查您的控制檯並查看object.parents
中的最後一部分是否丟失。我懷疑parts.pop()
從getTrail()
。
這是爲什麼,我該如何解決它?
感謝參宿一,我不知道這樣跨甚至功能。 –