Javascript(主干)-false何时为空对象?
我试图在一个新的Assemble.io项目中重新使用一些示例Javascript代码。我有一个main.js文件,它创建了一个主干视图的实例。视图的initialize函数的第一个参数的值在main.js中被确定为布尔值,如下所示:Javascript(主干)-false何时为空对象?,javascript,backbone.js,Javascript,Backbone.js,我试图在一个新的Assemble.io项目中重新使用一些示例Javascript代码。我有一个main.js文件,它创建了一个主干视图的实例。视图的initialize函数的第一个参数的值在main.js中被确定为布尔值,如下所示: new MyView(typeof myFunc != "undefined", anotherVar); 在最初的示例中(wihch我在Apache中作为虚拟主机运行),这一切的行为都是可以理解的。在我的新项目(这是一个Assembly.io站点,通过grnt
new MyView(typeof myFunc != "undefined", anotherVar);
在最初的示例中(wihch我在Apache中作为虚拟主机运行),这一切的行为都是可以理解的。在我的新项目(这是一个Assembly.io站点,通过grnt contrib connect提供服务)中,如果第一个参数的计算结果为false,则MyView.initialize接收到的是一个空对象,{}
。即使移除测试,我也会看到这一点,并执行以下操作:
new MyView(false, anotherVar);
按预期传递值true(或任何其他值,如字符串、数组等)
这对某人有意义吗?从主干网:
如果构造函数的第一个参数的计算结果为false
,则在调用initialize
之前将其替换为空对象
编辑:
重新指定选项
会改变参数
对象,这有点奇怪,但使用以下函数进行测试可以证实这一点:
function checker (options) {
console.log(arguments);
options || (options = {});
console.log(arguments);
}
不,这对我来说没有意义。也许你需要更多的调试?
MyView
的源代码是什么?关于您的编辑:。只要为它提供了参数,options
就是参数[0]
的getter/setter。谢谢!我正在试图理解这个问题的答案,最好有一个简单明了的解释。getter/setter在步骤11.c.ii.2-4中定义。注意:options | |(options={})
的意思与相同,如果(!options)options={}代码>感谢您深入了解这一点,这很有帮助-这至少帮助我理解为什么false变得{}我必须尝试进行更多的调试,以找出为什么(似乎)相同的代码在我的两个场景中产生不同的结果
function checker (options) {
console.log(arguments);
options || (options = {});
console.log(arguments);
}