反应本机变量声明

vee*_*eRN 5 reactjs react-native

这两种在react-native中声明变量的方式有何区别?

import React, { Component } from 'react';
import { AppRegistry, Image, View, Text, } from 'react-native';
export default class Hello extends Component {
render() {
**const var1 = 'hi';**
return ( );
}}

import React, { Component } from 'react';
import { AppRegistry, Image, View, Text, } from 'react-native';
**const var1 = 'hi';**
export default class Hello extends Component {
render() {
return ( );
}}
Run Code Online (Sandbox Code Playgroud)

acd*_*ior 5

这些变量之间的区别是作用域

在这两种情况下,由于使用constvar1只有声明才能访问。

const变量的范围是它正在运行的执行上下文。在您的两个示例中,执行上下文不同。

在第二个示例中:

import React, { Component } from 'react';
import { AppRegistry, Image, View, Text, } from 'react-native';
const var1 = 'hi';
export default class Hello extends Component {
  render() {
    return ( );
  }
}
Run Code Online (Sandbox Code Playgroud)

执行上下文,其中var1被宣布为文件

这意味着,在文件中的任何点const var1 = 'hi'; var1变量是可用的,其价值是'hi'

在第一个示例中:

import React, { Component } from 'react';
import { AppRegistry, Image, View, Text, } from 'react-native';
export default class Hello extends Component {
  render() {
    const var1 = 'hi';
    return ( );
  }
}
Run Code Online (Sandbox Code Playgroud)

声明的执行上下文是方法render()

同样,这意味着该方法在语句的任何位置render()并且在该render()方法内部const var1 = 'hi';语句之后,var1变量才可用,其值将为'hi'

tl; dr

总之,在const var1 = 'hi';方法内部使用时,var1(常量)变量将该方法内部可用。const var1 = 'hi';在文件中声明时,OTOH可以在整个文件中使用,而不在任何类{}或函数var1中。

但是,在这两种情况下,var1只能在const var1 = 'hi';声明语句之后定义/可用。

  • 因此,如果您在方法内部声明了一个变量,则该变量将在每次该方法运行时分配内存(但将在该方法运行时保持分配状态)。如果在文件中声明,则该文件将一直可用,直到该文件的任何代码(类,函数)存在并使用它为止(分配-解除分配的次数较少,但是在不使用它们的情况下,它们在内存中的停留时间会更长)。如您所见,两者都有优点和缺点。 (2认同)