Если не указано иначе, команды переходят на передний план. У вас есть только один процесс «переднего плана», выполняющийся в одном сеансе оболочки. & Amp; символ указывает командам работать в фоновом процессе и немедленно возвращается в командную строку для дополнительных команд.
sh my_script.sh &
Фоновый процесс будет не оставаться в живых после закрытия сеанса оболочки , SIGHUP завершает все запущенные процессы. По умолчанию в любом случае. Если ваша команда работает долго или работает неограниченно (т. Е. Микросервис), вам нужно отложить ее без nohup, чтобы она оставалась бегущей после отключения от сеанса:
nohup sh my_script.sh &
EDIT: Появляется быть серой областью, касающейся закрытия фоновых процессов, когда & amp; используется. Просто имейте в виду, что оболочка может закрыть ваш процесс в зависимости от вашей ОС и локальных конфигураций (особенно на CENTOS / RHEL): https://serverfault.com/a/117157 .
Потому что 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 без явной поддержки.
Я продолжаю замечать, когда фактический метод не является известными людьми, скажет Вам Вас, 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)
, Обладают
Как и большинство встроенных объектов в 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
Эти свойства не перечислимые.
Из документации MDC по for..in :
Цикл for ... in не выполняет итерацию по встроенным свойствам.
В новых реализациях JavaScript вы можете создавать свои собственные неперечислимые свойства. Ознакомьтесь с propertyIsEnumerable () и Object.defineProperty () .