React Native 组件中的函数(函数与常量函数)

Functions in a React Native Component (function vs const function)

这可能非常简单,但我不太清楚如何搜索答案。

我刚刚注意到我的 React 本机组件中有一些函数,有时我用 const 声明,而另一些则不用,这似乎没有区别。

像这样

const MyComponent = (props) => {
 
     const myFunction = () => {
        console.log("Hello world");
     }
     return(
         <TouchableOpacity onPress={myFunction}>
            ...somestuff
         </TouchableOpacity>
     )
}

const MyComponent = (props) => {
 
     myFunction = () => {
        console.log("Hello world");
     }
     return(
         <TouchableOpacity onPress={myFunction}>
            ...somestuff
         </TouchableOpacity>
     )
}

就输出而言,我找不到它们之间的任何不同之处。这只是编译器保存我的 a*s 还是它们之间实际上有区别?

我认为在 React Native 中它并不重要,因为它的生命周期。但是在正常情况下javascript它在提升上有区别。没有 const 你可以调用一个没有被声明的函数:

doTheThing();


function doTheThing() {
   console.log(`This is awesome number ${getAwesome()}`)
}

function getAwesome() {
  return (+((Math.random() * 10000).toString().split('.')[0]))
}

使用 Const/let 它不会让你这样做:

 const tryDoTheThing = () => {
    console.log(`This is me trying to be awesome ${getAwesome()}`)
 }


 // "getAwesome is not defined", because it is referenced too early
 tryDoTheThing() // comment to see the rest work


 const getAwesome = () => (+((Math.random() * 10000).toString().split('.')[0]))


 const doTheThing = () => {
   console.log(`This is awesome! ${getAwesome()}`)
 }

 doTheThing() // prints

使用 function 会将它的声明放在当前范围的顶部(到当前脚本或当前函数的顶部)。

Javascript 不会阻止您使用未声明的变量。

x = 10; // This is completely fine, as it'll be added in global scope

为了避免这样做,一般使用use strict

"use strict";
x = 10;       // This will cause an error because x is not declared