javascript - 为什么选项 ["foo"] ||选项.foo?

标签 javascript knockout.js

阅读我遇到的 knockout.js 源代码 this line

disposeWhenOption = options["disposeWhen"] || options.disposeWhen

我以前从未见过这种情况,而且我对 javascript 的所有了解都表明 || 的两侧不会不同。为什么 knockout 队伍可能会使用这种结构?

最佳答案

这是由 Closure Compiler 执行的符号重整的结果。来自Closure Compiler docs :

Closure Compiler compilation never changes string literals in your code, no matter what compilation level you use. This means that compilation with ADVANCED_OPTIMIZATIONS treats properties differently depending on whether your code accesses them with a string. If you mix string references to a property with dot-syntax references, Closure Compiler renames some of the references to that property but not others. As a result, your code will probably not run correctly.

同时使用点语法和字符串文字是解决此问题的“安全”方法,因为它有助于确保使用 API 的未导出部分但不在自己的代码上使用闭包编译器的客户端不会有任何问题。

关于javascript - 为什么选项 ["foo"] ||选项.foo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21821493/

相关文章:

javascript - Knockout JS observables,删除并重新添加选择选项

javascript - 如何从 JavaScript 获取数据到 Controller 并将其存储在数据库中

javascript - 如何在另一个函数中使用来自ajax的回调函数

javascript - 对对象类型数组的属性求和并将它们连接为单个对象

javascript - knockout 无法处理绑定(bind) "foreach"

javascript - 使用 knockout 选择后从下拉列表中设置所选值的 "title"

javascript - React中构造函数和属性的正确使用

javascript - 使用ajax以mvc模式通过 Controller 发送数据

javascript - Knockout.js 复选框的双向绑定(bind)不起作用

javascript - 如何使用 Knockout 更改 JS(TS) 中选择组件的值?