Преобразование JQuery Vars / Funcs в Vanilla JS Vars / Funcs? - PullRequest
0 голосов
/ 23 октября 2019

В настоящее время я работаю над устаревшим кодом и конвертирую весь старый JQuery в Vanilla / ES6 Javascript. Я сталкиваюсь с каким-то странным синтаксисом JQuery, который не могу получить четкое объяснение. Во-первых, у меня есть функция, которая выглядит следующим образом:

(function($) { Do something } (jQuery);

Есть ли что-то отличное от этой функции, кроме стандартного объявления функции? Примерно так:

const myFunc = () => ( Do something )

Во-вторых, в моем коде есть странные переменные. Один из них выглядит следующим образом:

$_some_weird_var_value = "";

Какова сделка со знаком доллара? Это просто указывает на JQuery, но если бы я хотел преобразовать эту переменную в обычную, я бы просто опустил знак доллара, верно? Подчеркивание в именах заставляет меня думать, что это какая-то константа, так что, возможно, это становится примерно так:

const _some_weird_var_value = "";

Любые и все входные данные приветствуются. Спасибо!

Ответы [ 2 ]

2 голосов
/ 23 октября 2019
(function($) { Do something } (jQuery);

Это просто старое, непосредственно вызванное выражение функции, иначе IIFE. Вы используете его для создания замыкания, например, для предотвращения объявления переменных в глобальной области видимости.

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

Например, это будет допустимо.

(function (foo) {
     // foo === window.jQuery
})(jQuery);

Разница между IIFE и объявлением стандартной функции заключается в том, что функция внутри IIFE объявляется в закрытой области видимости, то есть замыканиитогда как стандартное объявление функции объявляется в области, в которой оно объявлено.

Наконец, переменные, начинающиеся с $, являются «стандартом» jQuery, в этом нет ничего особенного в терминах языка Javascript.

2 голосов
/ 23 октября 2019
(function($) { Do something } (jQuery);

Это IIFE (функция, которая вызывается немедленно). Это не имеет ничего общего с jQuery (за исключением того, что jQuery передается в качестве аргумента).

const myFunc = () => ( Do something )

Это функция стрелки (назначенная константе), а не объявление функции .

Какое дело со знаком доллара?

Что касается JavaScript (или jQuery в этом отношении), то этопросто символ, который вам разрешено использовать в имени переменной.

Переменная $ - это традиционное короткое имя переменной, используемое для хранения функции jQuery.

Переменные с именами, которые начинаются с$ традиционно используются для хранения экземпляров объекта jQuery (например, $body = $("body");).

Подчеркивание в именах заставляет меня думать, что это некая константа

Это константа, если она объявлена ​​с const в первую очередь. В вашем примере не показано объявление переменной (если только она не является неявной глобальной, которую следует избегать и которая будет запрещена в строгом режиме ).

...