为什么我可以在JavaScript/TypeScript中声明变量之前使用它?
据我所知,在ES6和引入为什么我可以在JavaScript/TypeScript中声明变量之前使用它?,javascript,reactjs,typescript,react-native,Javascript,Reactjs,Typescript,React Native,据我所知,在ES6和引入let和const之后,使用它们声明的变量必须在使用之前声明。然而,我遇到过许多例子,在使用变量后声明变量时,代码运行良好。例如,这是React Native的TypeScript模板(简化版本)中的代码: 从“React”导入React; 从“react native”导入{StyleSheet,Text}; 常量应用=()=>{ 返回( 一些文本 ); }; const styles=StyleSheet.create({ 正文:{ 背景颜色:“蓝色”, }, });
let
和const
之后,使用它们声明的变量必须在使用之前声明。然而,我遇到过许多例子,在使用变量后声明变量时,代码运行良好。例如,这是React Native的TypeScript模板(简化版本)中的代码:
从“React”导入React;
从“react native”导入{StyleSheet,Text};
常量应用=()=>{
返回(
一些文本
);
};
const styles=StyleSheet.create({
正文:{
背景颜色:“蓝色”,
},
});
导出默认应用程序;
在这里,样式
是在使用后声明的,这似乎是一种惯用的方法,但即使是ESLint也会突出显示为
我的问题是:为什么它仍然有效?在声明之前,您没有使用它
变量只有在其内部使用的函数被称为时才被使用,实际上发生的是
constyles=StyleSheet.create({})代码>
已声明为被调用函数。因此,当函数运行时,变量被分配给对象
const-App=()=>{return()}代码>
声明应用程序将是一个函数,当从主进程执行它时,将调用该函数的构造函数,并且当前您只是从模块中导出它。因此,在导出时,样式已被声明,对象已返回,应用程序已被声明等待将来执行。因为该代码不会从上到下逐行执行。<代码> App构造函数是最后一个被调用的东西之一……当您调用<代码> Appor()时,定义了<代码>样式> /Cord>。尽管编译它不像其他语言,例如C++,编译器在文件顶部到底部声明之前,不识别变量,在程序在运行时调用函数之前,不考虑使用变量。