Object.list = {}和list = {}之间有区别吗?

问题描述:

我真的很想知道除了使代码在Object.list = {}和list = {}之间更加结构化之外是否有区别?Object.list = {}和list = {}之间有区别吗?

实施例:

var Player = function(){ 
    } 
    Player.list = {}; 
    var list = {}; 
+6

一个将其添加为PROPERT选手对象(功能),另一种宣称它作为一个独立的变量 –

+0

那些2件代码并不等同。 – csmckelvey

+0

我更加好奇你为什么会认为它们是相同的。 –

在声明如下变量:

var list = {}; 

变量是window全局对象上创建的,它相当于下面的代码:

window.list = {}; 

它的问题是有可能在页面上包含两个或更多位置中定义的相同变量的JavaScript文件,这会导致名称冲突问题。为了避免这种情况,你可以声明自己的名字空间,并定义一个新的变量有

var Player = function(){ 
} 
Player.list = {}; 
+0

值得注意的是,如果一个变量在函数的作用域外被声明,那么它只是全局变量。这就是在模块出现之前,在IIFE中包装代码块的原因。 – ste2425

Player.list限定listPlayer功能。因此,它只在该函数中有作用域,并且不能在函数之外使用(没有明确指出它是全局的)。相反,var list允许您默认全局使用list