Почему делает для (var i в Математике) не выполняют итерации через Математику.* в JavaScript?

Если не указано иначе, команды переходят на передний план. У вас есть только один процесс «переднего плана», выполняющийся в одном сеансе оболочки. & Amp; символ указывает командам работать в фоновом процессе и немедленно возвращается в командную строку для дополнительных команд.

sh my_script.sh &

Фоновый процесс будет не оставаться в живых после закрытия сеанса оболочки , SIGHUP завершает все запущенные процессы. По умолчанию в любом случае. Если ваша команда работает долго или работает неограниченно (т. Е. Микросервис), вам нужно отложить ее без nohup, чтобы она оставалась бегущей после отключения от сеанса:

nohup sh my_script.sh &

EDIT: Появляется быть серой областью, касающейся закрытия фоновых процессов, когда & amp; используется. Просто имейте в виду, что оболочка может закрыть ваш процесс в зависимости от вашей ОС и локальных конфигураций (особенно на CENTOS / RHEL): https://serverfault.com/a/117157 .

10
задан antimatter15 3 August 2010 в 15:32
поделиться

4 ответа

Потому что Math - это встроенный объект, свойства которого помечены неперечислимыми .Многие встроенные объекты имеют такое поведение, поэтому цикл по массиву с for..in не вызовет проблем, пока Array.prototype не будет расширен пользовательскими функциями, которые всегда перечисляемый по умолчанию.

До недавнего времени неперечислимое было внутренним свойством, недоступным для обычного кода Javascript. Однако EMCAScript 5 определяет возможность установки перечислимости и возможности записи (попробуйте изменить значение Math.PI ) любого свойства объекта с помощью Object.defineProperty () .

Он также предоставляет Object.getOwnPropertyNames () как способ получить список всех свойств объекта независимо от их перечислимости.

Object.getOwnPropertyNames(Math);

//returns
["LN10", "PI", "E", "LOG10E", "SQRT2", "LOG2E", "SQRT1_2", "LN2", "cos", "pow", "log", "tan", "sqrt", "ceil", "asin", "abs", "max", "exp", "atan2", "random", "round", "floor", "acos", "atan", "min", "sin"]

Насколько мне известно, единственные браузеры, которые в настоящее время поддерживают эти функции, - это Chrome и Safari. Firefox должен поддерживать его в версии 4. IE9 Я не уверен, но Microsoft заявила, что они намерены в конечном итоге поддерживать стандарт EMCAScript 5.

Я не верю, что есть способ эмулировать эту функциональность в интерпретаторах Javascript без явной поддержки.

15
ответ дан 3 December 2019 в 17:56
поделиться

Я продолжаю замечать, когда фактический метод не является известными людьми, скажет Вам Вас, shoud'nt делают это

, следующее является способом выставить закрытые функции данного объекта

let exposeFunctionsOf  =(obj) =>
{
    let iterated = false
    for ( let k in obj ) 
    {
        iterated = true;
        let prop = obj[k]
        if ( typeof props == "function")
        {
            window[k] = prop
        }
    }
    if (!iterated)
    {
       let props_names = Object.getOwnPropertyNames(obj);
       for (let prop_name of props_names)
       {
          iterated = true;
          let prop = obj[prop_name]
          if ( typeof prop == "function")
            window[prop_name] =prop
       }
    }
    if (!iterated)
    {
      console.warn("failed to iterate through the following object")
      cosnole.log(obj)
    }
}

Прикладной на Math объект

exposeFunctionsOf(Math)

Теперь, можно записать sin(x) вместо Math.sin(x)

, Обладают

0
ответ дан 3 December 2019 в 17:56
поделиться

Как и большинство встроенных объектов в JavaScript, свойства и методы объекта Math определены в спецификации ECMAScript (раздел 15.8.1) как неперечислимые с помощью (недоступного сценарию) атрибута DontEnum. В ECMAScript 5 вы можете помечать свойства и методы собственных объектов как неперечислимые также:

var o = {};

Object.defineProperty(o, "p", {
    enumerable: false,
    value: 1
});

Object.defineProperty(o, "q", {
    enumerable: true,
    value: 2
});

for (var i in o) {
    console.log(i + "=>" + o[i]);
}
// q=>2
5
ответ дан 3 December 2019 в 17:56
поделиться

Эти свойства не перечислимые.

Из документации MDC по for..in :

Цикл for ... in не выполняет итерацию по встроенным свойствам.

В новых реализациях JavaScript вы можете создавать свои собственные неперечислимые свойства. Ознакомьтесь с propertyIsEnumerable () и Object.defineProperty () .

2
ответ дан 3 December 2019 в 17:56
поделиться
Другие вопросы по тегам:

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