在JavaScript中直接使用函数外部变量是否属于正常写法?
这在JavaScript里完全是正常写法!
嘿,作为有C++/Python背景的开发者,刚接触JavaScript时遇到这种写法产生疑惑太正常啦~
你代码里的list变量是定义在App类的外部作用域中的,在JavaScript里,类的内部(比如构造函数、类方法)是可以访问其外部作用域中的变量的,这和你熟悉的语言其实是类似的逻辑:
- 在Python中,全局作用域的变量在类的方法里也能直接访问(只要没有同名局部变量遮蔽它)
- 在C++中,全局变量同样可以被类的成员函数引用
具体到你的代码里,list属于类所在的外部作用域(如果这段代码是在ES模块里,那它就是模块级作用域的变量;如果是在普通脚本里,就是全局作用域变量),所以App类的构造函数里自然能直接用它来初始化this.state.list。
不过额外提一句:虽然语法上完全合法,但在大型项目中,这种直接依赖外部变量的写法可能会让代码的耦合度变高,后续维护起来不太方便。如果是生产环境的代码,通常会考虑通过props传递这类数据,让组件的依赖更清晰。
内容的提问来源于stack exchange,提问作者user10024395
相关产品推荐
相关产品推荐

