6 вещей, о которых я не знал, что могу сделать с JS

JavaScript

Автор: Дэниел Переводчик: Front-end Xiaozhi Источник: js-крафт

Ставь лайк и смотри, поиск в WeChat【Переезд в мир】Обратите внимание на этого человека, который не имеет большого фабричного прошлого, но имеет восходящий и позитивный настрой. эта статьяGitHub GitHub.com/QQ449245884…Он был включен, статьи были классифицированы, и многие мои документы и учебные материалы были систематизированы.

Все говорили, что нет проекта для написания резюме, поэтому я помог вам найти проект, и это было с бонусом.【Учебник по строительству】.

JS — это гибкий язык, и мы часто думаем, что это один из самых простых языков, но также и самый сложный для освоения. Я использую JavaScript уже много лет, но до сих пор не знаю, наткнулся ли я на какие-то скрытые или грамматические навыки.

Давайте посмотрим и посмотрим, что я нашел.

1. Конструктор функций

Function()Хотя конструктор используется не очень часто, в нем необходимо разобраться.

Будь то оператор определения функции или литеральное выражение функции, определение функции используетfunction()ключевые слова. Отдельные функции также могут бытьFunction()Конструктор для определения, например:

const diff = new Function('a', 'b', 'return a - b');
diff(20,13) // 7

Фактический эффект этой строки эквивалентен следующей строке кода:

 const diff = function(a, b) {
   return a - b
}

diff(20, 13)

2. с заявлением

JavaScript имеетwithключевые слова,withПервоначальная цель оператора состояла в том, чтобы предоставить сокращение в стиле пространства имен для иерархического доступа к объектам. То есть в указанной области кода объект вызывается непосредственно по имени узла.

Мы уже знаем, что разрешение имени переменной выполняется с точки зрения области действия переменной и цепочки областей видимости (т. е. списка объектов, извлекаемых по порядку), в то время какwithОператор используется для временного изменения цепочки областей видимости.Его синтаксис:

with(object)

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

const book = {
    author: '前端小智',
    title: '我不知道还可以用 JS 做的 6 件事'
}
with(book) {
    console.log(author); // 前端小智
    console.log(title); // 我不知道还可以用 JS 做的 6 件事
}

использовать с语句的 JavaScript 代码很难优化,因此它的运算速度比不使用with语句的等价代码要慢得多。而且,在with语句中的函数定义和变量初始化可能会产生令人惊讶的、相抵触的行为,因此我们避免使用с заявлением.

3. + оператор

мы можем использовать+Оператор преобразует строки в числа. Если вы не хотите анализировать определенный числовой тип, вам не нужно использовать что-то вродеparseInt()илиparseFloat()такие функции, как .

const nr = +'1.5';
nr + 1; // 2.5

4. Назначьте свойства функциям

Мы можем присваивать свойства функциям. Затем можно создать настраиваемые функции, назначив функциям определенные свойства.

function sayHello() {
    if (sayHello.country = 'US') {
        return alert('Hi there!');
    }
    if (sayHello.country = 'FR') {
        return alert('Bonjour !');
    }
    if (sayHello.country = 'GR') {
            return alert('Guten Tag !');
        }
    return alert('Hi');
}
sayHello.country =  'FR';
sayHello(); // alert('Bonjour !');

Кроме того, мы можем использовать эти свойства функции как счетчики или «статические переменные».

5. arguments.callee.caller

Мы можем использовать аргументы.callee.caller, чтобы увидеть, какие функции вызывают текущую функцию.arguments Значение по умолчанию для обычных функций JS.arguments.callee.callerСообщите нам, кто вызвал функцию. похоже только на один слойconsole.trace().

function sayHello() {
  console.log(arguments.callee.caller) // [Function: start]
}

(function start() {
  sayHello()
})()

Кроме тогоarguments.calleeПредставляет ссылку на выполняющуюся в данный момент функцию.

function sayHello() {
  console.log(arguments.callee) // [Function: sayHello]
}

(function start() {
  sayHello()
})()

6. Оператор пустоты

voidоператор Вычисляет заданное выражение и возвращаетundefined.

void(1); // undefined
void(true); // undefined
void(false); // undefined
void({}); // undefined

Если вы спросите, почему просто вернутьсяundefinedВместо возврата вам нужно специальное ключевое словоundefined: Причина в том, что до ES5 можно было назвать глобальную переменнуюundefined,так:var undefined = "hello"илиvar undefined = 23, большинство браузеров могут его принять;undefinedНет никакой гарантии, что идентификатор действительно неопределен. Итак, чтобы вернуть фактическое неопределенное значение, используйтеvoidоператор. Это не очень популярный оператор и редко используется.

[Три ссылки] талантов - самая большая мотивация для Сяочжи продолжать делиться. Если в этом блоге есть какие-либо ошибки и предложения, вы можете оставить сообщение. Наконец, спасибо за просмотр.


Ошибки, которые могут существовать после развертывания кода, не могут быть известны в режиме реального времени.Чтобы решить эти ошибки впоследствии, много времени тратится на отладку журнала.Кстати, я рекомендую всем полезный инструмент мониторинга ошибок.Fundebug.

оригинал:Уууу, это -craft.IO/blog/6-thin…

Статья постоянно обновляется каждую неделю. Вы можете выполнить поиск «Big Move to the World» в WeChat, чтобы прочитать и обновить ее как можно скорее (на одну или две статьи раньше, чем в блоге). Эта статья находится на GitHub.GitHub.com/QQ449245884…Он был включен, и многие мои документы были разобраны. Добро пожаловать в Звезду и совершенство. Вы можете обратиться в тестовый центр для ознакомления во время собеседования. Кроме того, обратите внимание на паблик-аккаунт и ответьте в фоновом режиме.Благосостояние, вы можете увидеть преимущества, вы знаете.