Функция жирной стрелки React Uncaught ReferenceError

Я новичок в программировании и проходил курсы по udemy, чтобы изучить JS, html и css, потому что я читал, что они важны, прежде чем переходить к React. Я столкнулся с проблемой, которую не могу объяснить. Следующий код выполняется правильно и без ошибок:

function FriendLy(props){
        return(
            <div className = "friendLy">
                <Avatar pic = {props.pic}/>
                <Username name = {props.name}/>
                <GetConnected/>
            </div>
        );
    }    

однако следующий код возвращает "Uncaught ReferenceError"

FriendLy = (props) => {
        return(
            <div className = "friendLy">
                <Avatar pic = {props.pic}/>
                <Username name = {props.name}/>
                <GetConnected/>
            </div>
        );
    }     

Насколько я знаю ES6 и JS, эти два выражения должны давать одинаковый результат. Я использую babel, который, как я понимаю, переводит ES5 на ES6.

Пожалуйста, объясните мне, что я неправильно понимаю в любом из приведенных выше утверждений.

заранее спасибо

Они не одинаковы. Что такое полная ошибка? (также: стрелочные функции сохраняют родительский контекст, то есть то, на что ссылается this)

Chris G 06.12.2018 00:57

Uncaught ReferenceError: FriendLy не определен

Devin Miller 06.12.2018 01:01

Да, вы что-то назначаете FriendLy, но JS не знает, что такое FriendLy. Вот почему вы получаете сообщение об ошибке.

Chris G 06.12.2018 01:02

Я думал, что создаю функцию под названием FriendLy

Devin Miller 06.12.2018 01:08

Нет, если вы начнете с FriendLy вместо const, var или let (или function). Также: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

Chris G 06.12.2018 01:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
488
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы хотите сделать это функцией, назначенной переменной, поэтому вам нужно поставить const, var или let перед FriendLy:

var FriendLy = (props) => {...}

Ты уверен в этом

kind user 06.12.2018 00:56

Я получил следующую ошибку: Uncaught SyntaxError: Встроенный сценарий Babel: Ожидается неожиданный токен; (4:24) при применении первого предложения

Devin Miller 06.12.2018 01:10

@DevinMiller - Первое предложение - ерунда.

Quentin 06.12.2018 01:53

@Quentin Исправил сейчас, лучше?

Jack Bashford 06.12.2018 01:55
Ответ принят как подходящий

Вам нужно добавить const, let или var перед определением переменной, если вы работаете под строгий режим.

const FriendLy = (props) => {
   return (
     // ...
   )
}

Пока это правда, но без const получаю: ReferenceError: assignment to undeclared variable FriendLy

Chris G 06.12.2018 00:59

Спасибо! Разве это не было бы эквивалентом: const FriendLy = function (props) {return (// ...)}

Devin Miller 06.12.2018 00:59

@DevinMiller это почти то же самое. Оба определяют функции, но ключевое слово this внутри стрелочных функций ведет себя по-разному.

Guilherme Sehn 06.12.2018 01:02

Это интересно. У меня сложилось впечатление, что функция жирной стрелки - это строго изменение синтаксиса. Судя по вашему ответу, это не так. Спасибо

Devin Miller 06.12.2018 01:08

Это не @DevinMiller, есть изменение объема и привязки this. Кроме того, есть неявная отдача от таких вещей, как однострочные. const thingReturn = () => thisIsReturned

Jacob 06.12.2018 01:10

Джейкоб, спасибо. Мне нужно будет изучить этот объем и привязку.

Devin Miller 06.12.2018 01:11

Другие вопросы по теме