Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我可以在JavaScript/TypeScript中声明变量之前使用它?_Javascript_Reactjs_Typescript_React Native - Fatal编程技术网

为什么我可以在JavaScript/TypeScript中声明变量之前使用它?

为什么我可以在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({ 正文:{ 背景颜色:“蓝色”, }, });

据我所知,在ES6和引入
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++,编译器在文件顶部到底部声明之前,不识别变量,在程序在运行时调用函数之前,不考虑使用变量。