这两种方法都创建名称空间吗?还是有区别?
Do both of these create a namespace, or is there a difference?
var Blah = Blah || {};
或
if ((typeof Blah) == 'undefined') {
var Blah = {};
}
是有区别还是两者都做同样的事情?
有区别。第一个将Blah
赋值给Blah
,但如果Blah
是假值(在布尔上下文中类型转换为false
的值,例如NaN
, undefined
, 0
和''
),则将Blah
设置为空对象。
第二个命令只在恰好是undefined
的情况下将Blah
设置为空对象,因为typeof
类型undefined
的唯一值是undefined
。
同样,您只是在创建对象,而不是名称空间。甚至JavaScript中名称空间的概念也不确定;大多数情况下,它是通过创建一个自调用的匿名函数来完成的,该函数将一些内容导出到全局对象中,而不将其他内容导出到全局对象中。
如果Blah
的当前值为false,则将一个对象赋值给Blah
。
如果当前值未定义,则将一个对象赋值给Blah
。
JavaScript没有任何名称空间的概念。这只是一个术语,当一堆相关代码通过单个全局变量公开其所有公共部分时使用。因为这两个都是空对象,所以没有名称空间。
相关文章:
- "#"keyCode=222 vs 51(Chrome与Android版Chrome)-为什么有区别
- smoothstate.js和pjax有区别
- JavaScript中的嵌入循环和嵌套循环之间有区别吗
- jQuery递归函数调用和Javascript之间有区别吗;s setInterval
- 使用构造函数创建对象和返回对象有区别吗
- 预加载图像和缓存图像之间有区别吗
- Web组件与小工具:有区别吗
- 使用依赖注入时,通过引用调用服务或直接调用服务是否有区别
- Google Maps/Google Places:getPlace 和 getDetails 方法之间有区别吗?
- 直接在 HTML 中设置“onclick”与通过 DOM 设置“onclick”之间有区别吗?
- 使用嵌入时,元素和属性指令之间是否有区别
- 我让用户将脚本加载到网页中的方式是否有区别
- 这些JavaScript包含定义是否有区别
- 在JavaScript中测试元素的样式属性和css值之间有区别吗
- 为普通JS和AngularJS应用程序添加RWD有区别吗
- alert() 和 Notification.alert() 在 Xcode 中使用 PhoneGap 之间有区别吗?
- 把javascript放在头上和放在主体上有区别吗
- 有return语句和没有return语句的函数之间有区别吗
- 除了 JavaScript 之外,是否有任何其他语言在大括号开始位置(同一行和下一行)之间有区别
- 这两种方法都创建名称空间吗?还是有区别?