Я нашел отчет о выпуске v8 , который именно о том, что вы просите.
Теперь, чтобы суммировать то, что сказано в этом выпуске ... v8 может хранить переменные, которые являются локальными для функции в стеке или в объекте «context», который живет в куче. Он будет выделять локальные переменные в стеке, пока функция не содержит никакой внутренней функции, которая относится к ним. Это оптимизация. Если любая внутренняя функция ссылается на локальную переменную, эта переменная будет помещена в объект контекста (т. Е. В куче, а не в стеке). Случай eval
является особенным: если он вообще вызван внутренней функцией, все локальные переменные помещаются в объект контекста.
Причина для контекстного объекта заключается в том, что в общем случае вы можете вернуть внутреннюю функцию из внешней, а затем стек, который существовал во время выполнения внешней функции, больше не будет доступен. Таким образом, все, что имеет доступ к внутренней функции, должно пережить внешнюю функцию и жить в куче, а не в стеке.
Отладчик не может проверить те переменные, которые находятся в стеке. Что касается проблемы, возникающей при отладке, один из участников проекта говорит, что :
Единственное решение, о котором я мог думать, это то, что всякий раз, когда devtools включен, мы уничтожаем весь код и перекомпилируем с принудительным контекстным распределением. Это резко изменило бы производительность при использовании devtools.
blockquote>Вот пример «если какая-либо внутренняя функция относится к переменной, поместите ее в объект контекста». Если вы запустите это, вы сможете получить доступ к
x
в инструкцииdebugger
, хотяx
используется только в функцииfoo
, , которая никогда не называется !function baz() { var x = "x value"; var z = "z value"; function foo () { console.log(x); } function bar() { debugger; }; bar(); } baz();
RFC 2646 говорит:
тип среды текста/Плоскости является наименьшим общим знаменателем интернет-электронной почты со строками не больше, чем 997 символов (условно обычно не больше, чем 80)
, Другой популярный стандарт должен перенестись в 72 символах. Это относится ко времени многих консольных приложений (как РЕДАКТИРОВАНИЕ и много интерфейсов BBS) что отображаемый текст в ASCII "окно" включая границу и полосу прокрутки, позволяя немного меньше чем 80 символам быть отображенными.
Google говорит что Результаты 1 - 10 из приблизительно...
3,160 for +word +wrap +email +"80 characters"
2,820 for +word +wrap +email +"50 characters"
1,790 for +word +wrap +email +"60 characters"
1,720 for +word +wrap +email +"70 characters"
1,540 for +word +wrap +email +"100 characters"
1,250 for +word +wrap +email +"65 characters"
1,120 for +word +wrap +email +"40 characters"
962 for +word +wrap +email +"75 characters"
836 for +word +wrap +email +"72 characters"
Распространено перенестись, строки в 72 (80 также распространено, но это означает, что перейдет 80 при заключении в кавычки) обработать по крайней мере один или два уровня цитаты. Существует "писать сообщение/течь" тип MIME, что означает, что клиент перенесет сам текст на границах окна, но не, что многие клиенты поддерживают его. Просто установите своего редактора для обертывания в 72, и Вы будете в безопасности и читаемы большинством людей.
РЕДАКТИРОВАНИЕ: точный тип text/plain
с добавлением format=flowed
как это:
Content-Type: text/plain; format=flowed
См. rfc2646 для объяснений.
почты HTML нужно избежать IMNSHO, не все читают почту в браузере, или имейте поддерживающие HTML почтовые клиенты. Может быть эмулировано большинство причин использовать HTML (обогащающий почту подчеркиванием, полужирным и такой). HTML не должен быть перенесен, поскольку клиент адаптируется к размеру окна.
альтернатива HTML является "писать сообщение/обогащать" типом MIME, который дает Вам большинство преимуществ писем HTML w/o стычка, но снова, не может поддерживаться везде.
Видят здесь для, пишут сообщение/обогащают.
//
комментарий, который является тем, что производит команда/.
– limp_chimp
4 November 2013 в 11:58
Я часто нахожу меня стартовыми почтовыми ответами с:
[Format recovered--see http://www.lemis.com/grog/email/email-format.php]
, который я получил от Greg Lehey. Часть , что страница говорит:
Очевидно, должен быть некоторый способ указать, что текст сообщения не должен быть перенесен. Это - текст/плоскость. Существуют специальные типы вложения MIME, которые позволяют переноситься, хотя я все еще думаю, что это - плохая идея. Если Вы указываете, что Ваше сообщение может быть перенесено, Вы делаете предположение о том, на что похож экран получателя. Даже если Вы правы часть времени, Вы не можете быть правы все время. Например, у одного человека может быть экран 200 символы, широкие, чтобы смочь отобразить долгие записи файла журнала, но он не захочет видеть свой текст настолько долго.
Хороший почтовый API как JavaMail сделает это для Вас. Идеально, Вы не должны были бы думать об этой проблеме явно.
Перенеситесь в первом пробельном символе перед 72-м положением, или в 72-м положении, если нет того. В Eudora, когда я раньше использовал его, конвенция состояла в том, чтобы оставить пространство в конце строки, указывающей, что это было перенесено, таким образом, это предупредит о клиенте получения обратное течение абзац везде, где этому было нужно на основе ширины окна клиента. Я не уверен что дело обстоит так в текущих почтовых клиентах.
Обычно необходимо перенестись в 80, или немного меньше позволить тусклым клиентам заключать в кавычки без обертывания.
Не использовал linewrap, пока я не переключился на mutt/xterm (никогда не оглядывающийся назад).