Я думаю, что это сделает трюк:
SELECT REGEXP_REPLACE(COLUMN, '[^[:print:]]', '')
Не jQuery. Не YUI. Не (и т. Д. И т. П.)
Фреймворки могут быть полезны, но они часто скрывают иногда уродливые детали того, как на самом деле работают JavaScript и DOM от вас. Если ваша цель состоит в том, чтобы сказать «Я знаю JavaScript», то мы тратим на это много времени.
Вот некоторые особенности языка JavaScript, которые вы должны знать, чтобы понять, что он делает, и не быть пойманным, но которые не сразу очевидны для многих людей:
Это object.prop
и object['prop']
- это одно и то же (поэтому не могли бы вы прекратить использовать eval
, спасибо); свойства объекта всегда являются строками (даже для массивов); Что for
... in
для (и , что это не ).
Свойство обнюхивать; что такое undefined
(и почему оно пахнет ); почему, казалось бы, малоизвестный оператор in
полезен и отличается от проверок typeof
/ undefined
; hasOwnProperty
; цель delete
.
Что тип данных Number
действительно является плавающим; не зависящие от языка трудности использования поплавков; избегая восьмеричной ловушки parseInt
.
Определение вложенных функций; необходимость использования var
в объеме, который вы хотите избежать случайных глобалов; как можно использовать прицелы для укупорки; проблема замкнутого контура .
Как глобальные переменные и свойства window
сталкиваются; как глобальные переменные и элементы документа не должны сталкиваться, а в IE; необходимость использования var
в глобальном масштабе, чтобы избежать этого.
Как оператор function
действует, чтобы поднять ’определение перед кодом, предшествующим ему; разница между операторами и функциональными выражениями; почему выражения именованных функций не должны использоваться .
Как действительно работают функции конструктора, свойство prototype
и оператор new
; методы использования этого для создания нормальной системы класса / подкласса / экземпляра, которую вы действительно хотели; когда вы можете захотеть использовать объекты на основе замыкания вместо прототипирования. (Большинство учебного материала по JS абсолютно ужасны по этому поводу; мне потребовались годы, чтобы понять это прямо в моей голове.)
Как this
определяется во время вызова, а не связывается; следовательно, передача методов не работает так, как вы ожидаете от других языков; как можно использовать замыкания или Function#bind
, чтобы обойти это.
Другие функции пятого издания ECMAScript, такие как indexOf
, forEach
и методы функционального программирования в Array
; как исправить старые браузеры, чтобы их можно было использовать; используя их со встроенными выражениями анонимных функций, чтобы получить компактный читаемый код.
Поток управления между браузером и кодом пользователя; синхронное и асинхронное выполнение; события, которые возникают внутри потока управления (например, фокус), против событий и тайм-аутов, которые происходят, когда управление возвращается; как вызов якобы синхронного встроенного типа alert
может привести к потенциально катастрофическому повторному входу.
Как кросс-оконные скрипты влияют instanceof
; как межоконный сценарий влияет на поток управления различными документами; как postMessage
, надеюсь, исправит это.
См. этот ответ относительно двух последних пунктов.
Прежде всего, вам следует критически относиться к JavaScript, признавая, что по историческим причинам он является несовершенным языком (даже больше, чем большинство языков), и избегая его наихудших проблем. Работу Крокфорда в этой области определенно стоит прочитать (хотя я не на 100% согласен с ним в том, что такое «Хорошие детали»).
... о Google Web Toolkit , что означает, что ваш проект javascript, вероятно, мог бы быть разработан более удобным способом.
Поскольку JS является функциональным языком, приличный программист JS должен уметь писать Y-комбинатор и объяснять, как он работает на макушке.
Следующие вещи также важны:
1) Переменный подъем. 2) Цепочки прицелов и объекты активации.
, а затем такие вещи: :)
3) wtfjs.com
4) все является объектом http: //www.lifeinafolder .com / изображений / Js.jpg
with()
и где провести черту. throw
, чтобы преднамеренно остановить выполнение Javascript. Объектные литералы, потому что их так приятно писать.
Изучение языка очень хорошо и понимание его различных особенностей происходит из (многолетнего) опыта. Если вы хотите стать лучшим программистом, я бы сказал, понимая шаблоны проектирования, как и когда их использовать и / или даже когда вы их используете, не осознавая этого; техническая архитектура пользовательский опыт.
Знание языка (JavaScript) означает, что вы можете выбрать любой фреймворк и использовать его по своему желанию. Вам неизбежно придется погрузиться в исходный код, и если все, что вы знаете, это синтаксис фреймворка или 2 или 3, то вы не будете далеко ходить. Сказать, что получение исходного кода нескольких различных фреймворков, вероятно, является одним из лучших способов увидеть, как можно использовать JavaScript. Поработайте, просматривая код в Firebug или Web Inspector, а затем проверяя документацию JavaScript, особенно документы Mozilla и Webkit, чтобы получить дальнейшее понимание того, на что вы смотрите.
Понимая разницу между объектно-ориентированным и функциональным программированием, JavaScript - это привлекательное сочетание двух, а также того, когда и как использовать и то, и другое для создания потрясающей кодовой базы и потрясающих приложений, вы станете лучшим программистом JavaScript.
Простое чтение некоторых книг, особенно «хороших частей» Крокфорда, в которых он просто излагает свое мнение о том, что хорошо в JavaScript, пропуская при этом большую часть УДИВИТЕЛЬНЫХ частей JavaScript, может привести вас в замешательство.
Изучение кода, написанного кем-то вроде Томаса Фукса, с другой стороны, даст вам гораздо больше понимания возможности написания удивительного и эффективного JavaScript.
Попытка запомнить несколько ошибок или WTF также не очень поможет, вы поймете это, если начнете кодировать и проходить код библиотеки / фреймворков, особенно с комментариями, чтобы понять, почему они ' Мы использовали определенные свойства / значения, а не другие, почему и когда хорошо использовать определенные операнды и операторы, это все есть в коде, который используют люди фреймворка. Как лучше, чем учиться на примере? : ^)
Этот javascript является наиболее широко распространенным языком в мире. (Возможно)
JavaScript не поддерживает разделение ключевого слова return и оператора return с символом новой строки, как в следующем коде (или попробуйте его на моей странице jsFiddle )
function foo()
{
return
{
bar: 'something'
};
}
$(function()
{
document.write(foo());
});
Я не понимаю, почему JavaScript не поддерживает этот стиль, потому что намного проще читать очень сложный исходный код JavaScript по сравнению со стилем JavaScript по умолчанию.
PS. Я написал JavaScript почти 6 лет. Но я только что обнаружил эту ошибку при попытке выполнить следующую функцию. Всегда возвращает undefined. Когда я использую отладчик и вхожу в эту функцию, все работает нормально. Я думаю, что это должна быть худшая ошибка программирования в моей жизни.
function JqGridInlineEditor_GenerateTool(cellvalue, options, rowObject, disableEdit, disableDelete)
{
return
(!disableEdit ? '<a class="button edit" href="javascript: void(0);" onclick="JqGridInlineEditor_EditRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Edit.gif'), 'Click here to Edit or \nDouble-click row to edit.') : '') +
(!disableDelete ? '<a class="button delete" href="javascript: void(0);" onclick="JqGridInlineEditor_DeleteRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Delete.png'), 'Click here to Delete or \nSelect row and then press Delete') : '') +
(!disableEdit ? '<a class="button save" style="display:none" href="javascript: void(0);" onclick="JqGridInlineEditor_SaveRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Save.png'), 'Click here to Save or \nPress Enter') : '') +
(!disableEdit ? '<a class="button cancel" style="display:none" href="javascript: void(0);" onclick="JqGridInlineEditor_RestoreRow(this, \'{0}\');return false;" title="{2}"><img src="{1}" alt="{2}" /></a>'.format(options.rowId, getUrl('~/Content/Icons/Cancel.png'), 'Click here to Cancel or \nPress Esc') : '');
}
В Javascript производительность имеет значение.
Нет интеллектуального компилятора для оптимизации вашего кода, поэтому вы должны быть более осторожны при написании кода JavaScript, чем такие языки, как C #, Java ...
Массив . length
Метод - это не количество элементов массива, а самый высокий индекс. даже когда элемент был установлен на undefined
var a = [];
a.length; // === 0
a[10]; // === undefined
a[10] = undefined;
a.length; // === 11
a.pop(); // === undefined
a.length; // === 10
, это поведение вряд ли можно отличить от ошибки проектирования языка.
То, что Javascript - это не то, чему можно научиться за час!
jQuery будет моей лучшей рекомендацией. Не только для самого кода, но и идиома, стиль, мышление, стоящее за ним, наиболее достойны эмуляции.
Javascript объекты и функции как первоклассные гражданские , обратные вызовы , не забывая о событиях , а затем JQuery .
... что javascript - это не java:)
Многие, многие, начинающие с разработки сайтов, сказали мне, что javascript - это просто java!
Этот JavaScript намного отличается от других языков, чем вы думаете. Посмотрите этот великолепный Google Tech Talk, чтобы получить впечатление: http://www.youtube.com/watch?v=hQVTIJBZook
Я настоятельно рекомендую прочитать Javascript: The Good Parts
Нужно знать о следующем, чтобы сказать «Я знаю JavaScript»:
Вы не знаете JavaScript, если не знаете:
Если вы хотите быть настоящим ниндзя JavaScript, вы должны знать ответы на все вопросы в Совершенство убивает JavaScript викторина .
Пример для разжигания аппетита:
(function f(f){
return typeof f();
})(function(){ return 1; });
Что возвращает это выражение?
- «число»
- «неопределено»
- «функция»
- ошибка
Прочитав все вышеизложенное, также прекрасно выучить Javascript с помощью фреймворка, такого как jQuery. По правде говоря, это первый способ, которым многие люди подняли JS. В этом нет ничего постыдного.
Понимание материала, написанного в Javascript Крокфорда: «Хорошие части» , является довольно хорошим предположением, что человек является достойным программистом JS.
Вы можете в значительной степени знать, как использовать хорошую библиотеку, такую как JQuery, и все еще не знать скрытые части Javascript.
Еще одно замечание - инструменты отладки в различных браузерах. Программист JS должен знать, как отлаживать свой код в разных браузерах.
О! А зная, что JSLint полностью ранит ваши чувства!
Вы знаете javascript, если можете эффективно использовать массив, число, строку, дату и объект. Плюс очки по математике и регэкспу. Вы должны иметь возможность писать функции и использовать переменные (в правильной области видимости, то есть как «методы» объекта).
Я вижу некоторые комментарии о знании замыканий, экстравагантном синтаксисе функций, блабла. Все это не имеет отношения к этому вопросу. Это все равно, что сказать, что вы бегун, если вы можете пробежать 100 м за 11 секунд.
Я говорю, что, возможно, потребуется несколько недель, чтобы стать опытным в JavaScript. После этого требуются годы, десятки книг и тысячи строк программирования, чтобы стать экспертом, ниндзя и т. Д.
Но это был не вопрос.
О, и DOM не является частью javascript, как и jQuery. Поэтому я думаю, что оба вопроса в равной степени не имеют отношения к этому вопросу.
Переменные являются глобальными, если не объявлены как локальные !!
Плохо (DoSomething () вызывается только 10 раз):
function CountToTen()
{
for(i=0; i< 10; i++)
{
DoSomething(i);
}
}
function countToFive()
{
for(i=0; i<5; i++)
{
CountToTen();
}
}
CountToFive();
Хорошо (DoSomething ( ) вызывается 50 раз, как и предполагалось):
function CountToTen()
{
var i;
for(i=0; i< 10; i++)
{
DoSomething(i);
}
}
function countToFive()
{
var i;
for(i=0; i<5; i++)
{
CountToTen();
}
}
CountToFive();
Что должен знать каждый javascript-кодер?
Как насчет того, чтобы я мог отключить твои усилия двумя щелчками мыши. Так что предоставьте запасной вариант, если это возможно.
Для того, чтобы знать, что Javascript первоначально назывался LiveScript , а префикс «Java» был прикреплен для маркетинговых целей не потому, что Java и Javascript связаны (что они не являются).
Да, и за то, что он владеет любой версией «Javascript: The Definition Guide» Дэвида Фланагана (эта информация на странице 2).
... и за то, что высоко оценили тех, кто пытался запутать document.all [] Internet Explorer 4 и document.layers Netscape Navigator 4 до того, как подобные Jquery убрали боль.
РЕДАКТИРОВАТЬ:
Как указывает @Kinopiko, JavaScript изначально назывался проектом Mocha ( некоторые источники также считают, что он назывался проектом LiveWire), но он общепринятый что этот язык (написанный Бренданом Эйхом) должен был быть выпущен как LiveScript до того, как префикс Java был принят после его выпуска в начале 1996 года.
Ознакомьтесь с хотя бы одной библиотекой Javascript (Jquery, Prototype и т. Д.).
Узнайте, как использовать средства отладки основных браузеров (MSIE 7-8, Firefox, Chrome, Safari)
Читайте об индустрии: сайт Дугласа Крокфорда это сокровищница, в то время как Ajaxian.com - хороший блог, чтобы быть в курсе новых, интересных и необычных идей для Javascript. Есть ряд других ресурсов, но это те, которые помогли мне больше всего.