- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据错误报告,我认为如果 x 为空,以下表达式可能会抛出异常:
if ( !x || doSomething( x[prop], y[prop] ) === false )
异常(exception)是:
Cannot read property 'prop' of null
... 就好像 || 的右边即使左侧为真,也会进行评估。javascript reference似乎表明那不应该发生,但我不确定。我已经测试过只写 x = null 不会(总是)崩溃,但是否保证在每个 JS 引擎上都如此?
编辑:
关于同样的问题
if( x && foo( x[prop] ) === true && bar() === false )
一种表达方式是:
如果(a && b && c)
... 如果 a === false 则计算 b 或 c?该文档不清楚这种情况,仅适用于“a && ( expr1 && expr2 )”,而不是“a && expr1 && expr2”
完整代码片段
var x = null;
var y = {
"p1": "p1",
"p2": "p2"
};
function f() {
return true;
}
for (var propName in y) {
if (x && f(y[propName]) === true && f(y[propName]) === false) {
doSomething(x[propName], y[propName]);
} else if (!x || f(x[propName], y[propName]) === false) {
console.log(y[propName]);
}
}
EDIT2:为了完整性,在浏览器中运行的真实(最小化)代码
function a(c, b, e, f) {
for (var d in b) {
if (c && _.isObject(b[d]) === true && _.isArray(b[d]) === false) {
a(c[d], b[d], e, d + ".")
} else {
if (!c || _.isEqual(c[d], b[d]) === false) {
e.push({
name: f + d,
value: b[d]
})
}
}
}
return e
}
最佳答案
Javascript ||
运算符短路。右侧不会评估左侧是否为 true
。这是运算符的基本属性,应该在所有引擎中平等实现。
因此,右侧只会评估 x
是否为 truthy,并且 Javascript 中的所有 truthy 值都应该是可订阅的,不会出错。
话虽如此,y
在此示例中是完全未知的,可能会引发错误。
关于javascript - 那个 js 表达式安全吗 : if( ! x || doSomething( x[prop], y[prop] ) === false ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34358276/
这个比那个好吗? 这甚至是一个有效的问题吗? 我最近被告知 MyObject.DoSomething()已经过时了,服务方式是首选。那正确吗? 例子: public class Policy : IC
这个问题已经有答案了: Are there differences between .then(functionReference) and .then(function(value){return
我想知道为什么 myBtn = Button(text="btn", command=doSomething) 不同于 myBtn = Button(text="btn", command=doSom
在 Objective-C 中,为什么是 [object doSomething]?难道不是 [*object doSomething] 因为你在对象上调用一个方法吗?这意味着你应该取消引用指针? 最
这个问题已经有答案了: Java getting an error for implementing interface method with weaker access (5 个回答) 已关闭 7
我正在努力解释 java 中的 oop 概念。 oop 的一个主要原则是对象有方法;所以 Object.method();作品。我将此与必须执行方法(对象)的过程编程进行对比。 这叫封装吗? oop方
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: javascript syntax: function calls and using parenthesis t
这个问题在这里已经有了答案: What does the || : in this line of bash script from an rpm spec file do? (5 个答案) 关闭
我刚刚看到一段代码,其中一些类只有一个方法。我选了一个例子: public class TempDirCleanupProcess { public void cleanup(final File
我正在用 Amaya 检查我的 HTML 代码。 我在这一行有一个错误: 对于 onpaste,我收到“无效属性”onpaste“(保存时删除)”错误。 不知道为什么?非常感谢您的帮助。 最佳答案
应该如何编写代码,以便测试可以访问此处函数执行的属性: _instance.addProducts(_product).products 测试 describe(`ONE product added`
我有一个名为 Vehicle 的抽象类: public abstract class Vehicle { public void run() { addToRunningVeh
我想使用 RXJS Observable。基本上它工作正常,但我不仅需要在调用 observer.next() 时使用react,还需要在调用 observer.complete() 时使用react
我在使用非常基本的 Aurelia 应用程序时遇到问题。单击按钮时,它说找不到 doSomething 函数。其他组件中的其他按钮工作正常。显然我在这里做的事情根本上是错误的? 应用程序.html:
我想过滤一些元素并调用 stop() 函数,然后删除它们。这是示例代码: items.stream().filter(x -> x.children.isEmpty()).forEach(x::sto
我想过滤一些元素并调用 stop() 函数,然后删除它们。这是示例代码: items.stream().filter(x -> x.children.isEmpty()).forEach(x::sto
我正在编写一个 hapi js 插件,并且想知道其他插件可以使用的公开方法的两种方式之间有什么区别。 方法一: server.method("doSomething", function ()
执行以下工作流的最佳做法是什么: $("#myDiv").hide(); $.getJSON("url", function(data) { ... snorrr ... hours later ..
哪些因素决定哪种方法更合适? 最佳答案 我认为两者都有自己的位置。 你不应该简单地使用 DoSomethingToThing(Thing n)只是因为你认为“函数式编程很好”。同样,您不应该简单地使用
我有以下代码: interface InterfaceA {} interface InterfaceB extends InterfaceA { } interface InterfaceC {
我是一名优秀的程序员,十分优秀!