CommonAppData в vbscript

Это то, что вы видите, когда у вас есть разреженный массив - с некоторыми определенными признаками, но некоторые показатели ниже, чем определенные знаки , не определенные (или когда-либо назначенные), для пример:

const arr = [];
arr[65] = 'foo';
console.log(arr);

(посмотрите на результаты этих двух фрагментов в консоли браузера, консоль фрагмента не будет видна )

Обратите внимание, что это отличается от наличия буквальных значений undefined в первых 65 знаках, которые будут показаны как undefined, а не empty:

]
const arr = new Array(65).fill(undefined);
arr[65] = 'foo';
console.log(arr);

Разреженные массивы почти никогда не являются хорошей идеей, хотя - если вы когда-либо увидите это, это признак того, что вам, вероятно, следует исправить код, чтобы избежать разреженных массивов. Вместо этого рассмотрим другую структуру, возможно, объект с числовыми ключами:

const obj = {
  '65': 'foo'
};

Программист будет ожидать, что массив будет упорядоченной коллекцией элементов - что бы это значило для коллекции вообще не иметь никакого значения вершина упорядоченной коллекции (не только undefined, но не любое значение)? Это просто не имеет особого смысла - хотя возможно , такие конструкции - не то, для чего предназначены массивы.

Как отмечает Кайидо, пустые элементы не будут повторяться с помощью методов массива, таких как forEach:

const arr = [];
arr[65] = 'foo';
arr.forEach((item, i) => {
  console.log(item, i);
});

имеет смысл, но все же не интуитивно понятно (вы были бы уверены в этом, не пытаясь самостоятельно выполнить код или поискать спецификацию?). Обычно можно ожидать, что первая итерация обратного вызова forEach будет иметь индекс 0.

7
задан mirabilos 3 January 2015 в 15:35
поделиться

1 ответ

Const CommonAppData = &H23&  ' the second & denotes a long integer '

Set objShell  = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(CommonAppData)

Set objFolderItem = objFolder.Self

MsgBox objFolderItem.Name & ": " & objFolderItem.Path

MSDN содержит страницу, которая перечисляет другой Shell Специальные Константы Папки.

Эта страница хороша, также: Перечисляя Специальные Папки, часть Руководства по созданию сценариев Microsoft Windows 2000. (Ссылка является ныне несуществующей, но интернет-Архив все еще имеет копию.)

12
ответ дан 6 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: