我正在尝试在 javscript 中定义命名空间,并且正在遵循本教程:https://www.geeksforgeeks.org/namespacing-in-javascript/
第一行是:
let MyApp = MyApp || {};
我认为
MyApp || {}
是为了防止意外重新声明MyApp
。但这只会产生错误。 Uncaught ReferenceError: MyApp is not defined.
为什么这不起作用?
那行代码不起作用。我认为它是由记住
var
如何工作的人写的,但是对于 let
和 const
来说,它没有意义。
用
let
和 const
定义的变量在声明之前不能使用,并且由于首先评估右侧,因此该变量尚未声明。另一方面,如果它已经被声明了,那么再次声明它会抛出一个不同的错误:“Identifier MyApp has not beenelated”
let MyApp = {};
let MyApp = MyApp || {}
因此无论它是否已经存在,代码都会抛出错误。
当
var
是定义变量的唯一方法时,你可以编写这种代码。那是因为你可以在定义变量之前访问它(它的值只是undefined
),并且你可以重新声明变量。